Laço interno - Inner loop

Em programas de computador , uma forma importante de fluxo de controle é o loop que faz com que um bloco de código seja executado mais de uma vez. Um idioma comum é ter um loop aninhado dentro de outro loop, com o loop contido sendo comumente referido como o loop interno . Existem dois tipos principais de loop e eles podem ser aninhados um dentro do outro em, possivelmente, qualquer profundidade conforme necessário. Os dois tipos são loop for e loop while. Ambos são ligeiramente diferentes, mas podem ser trocados. A pesquisa mostrou que o desempenho da estrutura completa de um loop com um loop interno é diferente quando comparado com um loop sem um loop interno. De fato, mesmo o desempenho de dois loops com diferentes tipos de loop interno, onde um é um loop for e o outro um loop while, são diferentes.

Foi observado que mais cálculos são realizados por unidade de tempo quando um loop for interno está envolvido do que de outra forma. Isso implica que, dado o mesmo número de cálculos a serem realizados, aquele com um loop for interno terminará mais rápido do que aquele sem ele. Esta é uma técnica de otimização de loop independente de máquina ou plataforma e foi observada em várias linguagens de programação e compiladores ou interpretadores testados. O caso de um loop while como o loop interno teve um desempenho ruim, sendo ainda mais lento do que um loop sem nenhum loop interno em alguns casos. Dois exemplos abaixo escritos em python apresentam um loop while com um loop for interno e um loop while sem nenhum loop interno. Embora ambos tenham a mesma condição de terminação para seus loops while, o primeiro exemplo terminará mais rápido por causa do loop for interno. A variável innermax é uma fração da variável maxticketno no primeiro exemplo.

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

Referências