Pętla wewnętrzna - Inner loop

W programach komputerowych ważną formą przepływu sterowania jest pętla, która powoduje wielokrotne wykonanie bloku kodu. Popularnym idiomem jest zagnieżdżenie pętli w innej pętli, przy czym pętla zawarta jest powszechnie nazywana pętlą wewnętrzną . Istnieją dwa główne typy pętli, które mogą być zagnieżdżane w sobie nawzajem na dowolną głębokość. Te dwa typy to pętla for i while. Oba są nieco inne, ale można je zamienić. Badania wykazały, że wydajność całej struktury pętli z wewnętrzną pętlą jest inna niż w przypadku pętli bez wewnętrznej pętli. Rzeczywiście, nawet wydajność dwóch pętli z różnymi typami pętli wewnętrznej, gdzie jedna jest pętlą for, a druga pętlą while, jest inna.

Zaobserwowano, że więcej obliczeń jest wykonywanych w jednostce czasu, gdy zaangażowana jest wewnętrzna pętla for niż w innym przypadku. Oznacza to, że biorąc pod uwagę taką samą liczbę obliczeń do wykonania, ten z wewnętrzną pętlą for zakończy się szybciej niż ten bez niej. Jest to technika optymalizacji pętli niezależna od maszyny lub platformy i została zaobserwowana w kilku testowanych językach programowania i kompilatorach lub interpreterach. Przypadek pętli while jako pętli wewnętrznej działał źle, w niektórych przypadkach działał nawet wolniej niż pętla bez żadnej wewnętrznej pętli. Dwa poniższe przykłady napisane w Pythonie przedstawiają pętlę while z wewnętrzną pętlą for i pętlą while bez żadnej wewnętrznej pętli. Chociaż oba mają ten sam warunek zakończenia dla swoich pętli while, pierwszy przykład zakończy się szybciej z powodu wewnętrznej pętli for. Zmienna innermax jest ułamkiem zmiennej maxticketno w pierwszym przykładzie.

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

Bibliografia