0

使用以下代码,我的程序运行速度快了 30000ns:

long t = System.nanoTime();
...
long t2 = System.nanoTime();
System.out.println("Time: " + (t2 - t));

比其他:

long t = System.nanoTime();
...
System.out.println("Time: " + (System.nanoTime() - t));

在第一个中,我什至制作了另一个变量,为什么它会更快?

4

1 回答 1

1

第二个创建一个新的 StringBuilder 并在计时之前将一个 String 附加到它上面。第一个在做这项额外工作之前需要时间。

第二个相当于

System.out.println(new StringBuilder().append("Time: ")
                   .append(System.nanoTime() - t).toString());

或者

StringBuildler sb = new StringBuilder().append("Time: "); // included in timing
long time = System.nanoTime() - t;
System.out.println(sb.append(time).toString());

顺便说一句,仅向控制台执行输出可能会干扰非常短的任务并使它们变慢。我建议您多次运行测试,忽略前 20K 作为热身,并在最后打印结果摘要。

于 2013-10-27T18:51:01.450 回答