性能问题:“java.text.MessageFormat.format”vs“StringBuilder”

时间:2013-03-12 09:58:41

标签: java performance-testing

我希望通过比较MessageFormatStringBuilder类来了解。 假设一个例子我有一个字符串。对于性能明智的哪一个是快速的: java.text.MessageFormat.formatStringBuilder("Test ").append("Hello ")

String txt = java.text.MessageFormat.format("Test {0}"," Hello") 
String txt1=   new StringBuilder("Test ").append("Hello ")

我只想知道在最佳做法或表现明智的情况下使用哪一个

2 个答案:

答案 0 :(得分:14)

亲自尝试:

long start = System.nanoTime();
String txt = MessageFormat.format("Test {0}"," Hello");
System.out.println("MessageFormat: " + (System.nanoTime() - start) + " ns");

start = System.nanoTime();
String txt1 = new StringBuilder("Test ").append("Hello").toString();
System.out.println("StringBuilder: " + (System.nanoTime() - start) + " ns");

输出:

  

MessageFormat:1125974 ns

     

StringBuilder:16705 ns

<强>结论:

StringBuilder工作得更快,因为它只是为现有数组添加了一些字符。

答案 1 :(得分:3)

StringBuilder只会将文字附加到动态缓冲区,而MessageFormat必须在附加数据之前解析给定格式,然后StringBuilderMessageFormat更有效。