我编写了一个小类进行测试,该类具有两者的更好性能,并且+领先于格式。以5到6的倍数进行尝试
import java.io.*;import java.util.Date;public class StringTest{ public static void main( String[] args ){ int i = 0; long prev_time = System.currentTimeMillis(); long time; for( i = 0; i< 100000; i++){ String s = "Blah" + i + "Blah"; } time = System.currentTimeMillis() - prev_time; System.out.println("Time after for loop " + time); prev_time = System.currentTimeMillis(); for( i = 0; i<100000; i++){ String s = String.format("Blah %d Blah", i); } time = System.currentTimeMillis() - prev_time; System.out.println("Time after for loop " + time); }}
对不同的N运行上面的结果表明,两者的行为均呈线性,但
String.format慢5-30倍。
原因是在当前实现中,
String.format首先使用正则表达式解析输入,然后填充参数。另一方面,与plus的连接通过javac(而不是JIT)进行优化,并StringBuilder.append直接使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)