This article另有建议。但是仍然需要评估循环条件。 java只是使用特定技巧来识别这种情况吗?
答案 0 :(得分:3)
查看您引用文章的follow-up story。
回答人们的注意事项:看来OP正在询问.NET JIT,而不是Java JIT,因为引用的文章表明Java做得更好(或者只做了Java)优化了空循环。 / p> 编辑:谷歌搜索更多答案,Jon Skeet的名字不断涌现。例如,请参阅this thread on C# optimizations。因此,当他回答时,我们将获得权威的答案! : - )
答案 1 :(得分:0)
答案 2 :(得分:0)
这篇文章是从2003年开始的。从那时起,CLI(和java VMs)已经取得了很大的进步。通常,在进行微基准测试时,您必须非常谨慎。最终测量jit性能,编译器在删除死代码时的效率,计时开销,垃圾收集等等都非常容易。
答案 3 :(得分:0)
Java并不总是优化空循环方式。在这种情况下,计算4个BN数字需要2.966秒。
long start = System.nanoTime();
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++);
long time = System.nanoTime() - start;
System.out.printf("Took %.3f seconds to empty loop.%n", time * 1e-9);
打印
Took 2.966 seconds to empty loop.
这是使用Java 6u11,也许6u14会更聪明。
答案 4 :(得分:-1)
一般情况下,尽可能简单地编写代码,以便JVM可以很好地猜测你要做的事情。