我做了和这篇文章一样的测试: new String() vs literal string performance
这意味着我想测试哪个性能更好。正如我所料,结果是文字赋值更快。我不知道为什么,但是我用更多的赋值进行了测试,我注意到一些奇怪的事情:当我让程序执行超过 10.000 次的循环时,文字赋值相对而言并不比少于 10.000 的赋值快得多. 在 1.000.000 次重复时,它甚至比创建新对象还要慢。
这是我的代码:
double tx = System.nanoTime();
for (int i = 0; i<1; i++){
String s = "test";
}
double ty = System.nanoTime();
double ta = System.nanoTime();
for (int i = 0; i<1; i++){
String s = new String("test");
}
double tb = System.nanoTime();
System.out.println((ty-tx));
System.out.println((tb-ta));
我让它像上面写的那样运行。我刚刚学习 Java,我的老板让我做测试,在我展示测试结果后,他让我找到答案,为什么会发生这种情况。我在谷歌或stackoverflow上找不到任何东西,所以我希望有人能在这里帮助我。
factor at 1 repetition 3,811565221
factor at 10 repetitions 4,393570401
factor at 100 repetitions 5,234779103
factor at 1,000 repetitions 7,909884116
factor at 10,000 repetitions 9,395538811
factor at 100,000 repetitions 2,355514697
factor at 1,000,000 repetitions 0,734826755
谢谢!