Inner loop
In computer programs, an important form of control flow is the loop which causes a block of code to be executed more than once. A common idiom is to have a loop nested inside another loop, with the contained loop being commonly referred to as the inner loop. Two main types of loop exist and they can be nested within each other to, possibly, any depth as required. The two types are for loop and while loop.[1] Both are slightly different but may be interchanged. Research has shown that performance of the complete structure of a loop with an inner loop is different when compared with a loop without an inner loop.[2] Indeed, even the performance of two loops with different types of inner loop, where one is a for loop and the other a while loop, are different.
It was observed that more computations are performed per unit time when an inner for loop is involved than otherwise. This implies, given the same number of computations to perform, the one with an inner for loop will finish faster than the one without it. This is a machine- or platform-independent technique of loop optimization and was observed across several programming languages and compilers or interpreters tested. The case of a while loop as the inner loop performed badly, performing even slower than a loop without any inner loop in some cases. Two examples below written in python present a while loop with an inner for loop and a while loop without any inner loop. Although both have the same terminating condition for their while loops, the first example will finish faster because of the inner for loop. The variable innermax is a fraction of the maxticketno variable in the first example.
while ticketno * innermax < maxticketno:
for j in range(0, innermax):
if (ticketno * innermax + j) == jackpotno:
return
ticketno += 1
while ticketno < maxticketno:
if ticketno == jackpotno:
return
ticketno += 1
References
- Ghezzi, C; Jazayeri, M (1996). Programming Language Concepts (3rd edn.). John Wiley & Sons.
- Adewumi, Tosin (August 2018). "Inner loop program construct: a faster way for program execution". Open Computer Science. 8: 115–122. doi:10.1515/comp-2018-0004.