How does an optimizing compiler react to a program with nested loops?
Posted
by
D.Singh
on Programmers
See other posts from Programmers
or by D.Singh
Published on 2014-05-29T10:55:07Z
Indexed on
2014/05/31
3:52 UTC
Read the original article
Hit count: 573
Say you have a bunch of nested loops.
public void testMethod() {
for(int i = 0; i<1203; i++){
//some computation
for(int k=2; k<123; k++){
//some computation
for(int j=2; j<12312; j++){
//some computation
for(int l=2; l<123123; l++){
//some computation
for(int p=2; p<12312; p++){
//some computation
}
}
}
}
}
}
When the above code reaches the stage where the compiler will try to optimize it (I believe it's when the intermediate language needs to converted to machine code?), what will the compiler try to do? Is there any significant optimization that will take place?
I understand that the optimizer will break up the loops by means of loop fission. But this is only per loop isn't it? What I mean with my question is will it take any action exclusively based on seeing the nested loops? Or will it just optimize the loops one by one?
If the Java VM complicates the explanation then please just assume that it's C or C++ code.
© Programmers or respective owner