2014-12-04 57 views
1

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

例如: 的utilityhas解开下一个循环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; 
    } 

由于 伊塔马尔。

+4

可能并不容易,甚至可能,因为直到运行时才知道(一般情况下)循环将运行多少次。你为什么需要这个?可能有更好的方法。 – Bathsheba 2014-12-04 13:57:18

回答

2

可能没有;即使它们没有任何用处。

JIT 执行循环展开(至少,Oracle JVM的JIT),当它估计它是有益的。其他优化。

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

0

它可以用面向对象编程。

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

但它是棘手的,我认为这是有经验的程序员的工作。

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

但是JIT编译器也可能会在运行时执行这种类型的展开优化。