Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET JIT是否优化空循环?_C#_.net_Performance_Jit - Fatal编程技术网

C# NET JIT是否优化空循环?

C# NET JIT是否优化空循环?,c#,.net,performance,jit,C#,.net,Performance,Jit,这表明情况并非如此。但是仍然需要评估循环条件。java只是采用了一种特定的技巧来识别这种情况吗?一般来说,尽量简单地编写代码,这样JVM就可以很好地猜测您要做什么。请查看您引用的文章 请注意:OP询问的似乎是.NET JIT,而不是Java JIT,因为引用的文章表明Java在优化空循环方面做得更好(或者说只有Java做了) 编辑:谷歌搜索更多答案,Jon Skeet的名字不断出现。例如,请参见。因此,当他回答时,我们将得到权威的答案!:-) 会的 至少使用Java5和Java6。您链接到的文

这表明情况并非如此。但是仍然需要评估循环条件。java只是采用了一种特定的技巧来识别这种情况吗?

一般来说,尽量简单地编写代码,这样JVM就可以很好地猜测您要做什么。

请查看您引用的文章

请注意:OP询问的似乎是.NET JIT,而不是Java JIT,因为引用的文章表明Java在优化空循环方面做得更好(或者说只有Java做了)

编辑:谷歌搜索更多答案,Jon Skeet的名字不断出现。例如,请参见。因此,当他回答时,我们将得到权威的答案!:-)

会的


至少使用Java5和Java6。您链接到的文章是关于旧VM的。

这篇文章来自2003年。从那时起,CLI(和java虚拟机)已经有了很大的进步。一般来说,在进行微基准测试时,您必须非常谨慎。最终很容易衡量jit性能、编译器在删除死代码方面的效率、计时开销、垃圾收集等等。

Java并不总是优化空循环的方式。在这种情况下,计算40亿个数字需要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);

这是在使用Java 6u11,也许6u14会更智能。

OP似乎在询问C#JIT,而不是Java JIT。你可以知道手头是否有C#编译器。如果你没有,我想知道你对优化有什么兴趣?也许我离开了一台有C#编译器的计算机:)您可能必须使用-服务器虚拟机而不是(默认)-客户端虚拟机来获得更高级的优化,比如这个优化。他问的不是JVM,而是.NETCLR。
Took 2.966 seconds to empty loop.