在程序中进行循环展开,可以提高程序的速度(当前的案例不是JIT的循环展开,但是可以体现的循环展开带来的优化效果)。
![](https://img.kancloud.cn/1e/5d/1e5d6ea895c5cf82797ac68c8ed26efa_578x604.png)
![](https://img.kancloud.cn/08/ec/08ec114605f92bc019c224c95bd435bb_1154x120.png)
> 此处有误,`loopUnrolling`方法中应当改为`for(int i = 0; i < COUNT; )`,修改后的基准测试结果没有错误时的明显,但是能呈现出微小的优化效果。
----
![](https://img.kancloud.cn/f6/cc/f6cceb8166d26b58205b94702e3a8af4_390x450.png)
![](https://img.kancloud.cn/18/8b/188bffd545b45560b10be010a7b1f6ad_360x756.png)
> 真实的处理器会有指令流水线(instruction pipeline),如果程序一直向下线性执行的话,就能够充分地引用流水线,因为下一条执行的指令马上就会就绪。
不过,一旦碰到跳转指令,指令流水线的优势通常就消失了,因为流水线的内容需要丢弃掉并重新从主内存中跳转地址处开始加载新的操作码。这里所产生的性能损耗和缓存未命中是类似的——都要额外从主存中加载一次。(并发编程网)