展开给定数字的循环

时间:2014-12-04 13:54:56

标签: java

是否有任何函数/实用程序/工具可以解除给定数字的循环(n次迭代)。   (Java语言)

例如: 该实用程序在下一个循环中展开3次:

 for(int i=0; i<10; i++){  
        int k = k + 1; 
   }  

tansformed代码必须是:

   k = k + 1; 
   k = k + 1;  
   k = k + 1;  
   for(int i=3; i<10; i++){  
        int k = k + 1;  
   } 

由于 伊塔马尔。

2 个答案:

答案 0 :(得分:2)

可能没有;即使他们是,它也没有任何用处。

JIT 在估计它有益时执行循环展开(至少Oracle JVM&#39; JIT会这样做)。在其他优化中。

编写明显正确的代码并让JVM处理优化。无论如何,JIT比你聪明。在我之后重复:JIT比你聪明;)

答案 1 :(得分:0)

可以使用面向Acpect的编程。

http://en.wikipedia.org/wiki/Aspect-oriented_programming

但这很棘手,我认为这对有经验的程序员来说是一份工作。

使用AOP,您可以定义在编译过程开始时应用于源代码的规则,例如手动展开。

但是,JIT-Compiler也可能会在运行时动态展开这种类型的优化。