显然在我的带有HotSpotJDK1.7.0_45(所有编译器/VM选项设置为默认值)的Windows8笔记本电脑上,下面的循环finalintn=Integer.MAX_VALUE;inti=0;while(++i至少比以下速度快2个数量级(~10ms对~5000ms):finalintn=Integer.MAX_VALUE;inti=0;while(i++我在编写一个循环来评估另一个不相关的性能问题时碰巧注意到了这个问题。和++i的区别和i++大到足以显着影响结果。如果我们看字节码,更快版本的循环体是:iinciloadldcif_icmplt对于较慢的版本:iloadiincld
显然在我的带有HotSpotJDK1.7.0_45(所有编译器/VM选项设置为默认值)的Windows8笔记本电脑上,下面的循环finalintn=Integer.MAX_VALUE;inti=0;while(++i至少比以下速度快2个数量级(~10ms对~5000ms):finalintn=Integer.MAX_VALUE;inti=0;while(i++我在编写一个循环来评估另一个不相关的性能问题时碰巧注意到了这个问题。和++i的区别和i++大到足以显着影响结果。如果我们看字节码,更快版本的循环体是:iinciloadldcif_icmplt对于较慢的版本:iloadiincld