Innere Schleife - Inner loop

In Computerprogrammen ist eine wichtige Form des Steuerungsflusses die Schleife, die bewirkt, dass ein Codeblock mehr als einmal ausgeführt wird. Eine übliche Redewendung besteht darin, eine Schleife in einer anderen Schleife zu verschachteln , wobei die enthaltene Schleife üblicherweise als innere Schleife bezeichnet wird . Es gibt zwei Haupttypen von Schleifen, die je nach Bedarf in beliebiger Tiefe ineinander verschachtelt werden können. Die beiden Typen sind für Schleife und while-Schleife. Beide sind leicht unterschiedlich, können aber ausgetauscht werden. Untersuchungen haben gezeigt, dass die Leistung der vollständigen Struktur einer Schleife mit einer inneren Schleife im Vergleich zu einer Schleife ohne innere Schleife unterschiedlich ist. In der Tat ist sogar die Leistung von zwei Schleifen mit unterschiedlichen Arten von inneren Schleifen, wobei eine eine for-Schleife und die andere eine while-Schleife ist, unterschiedlich.

Es wurde beobachtet, dass mehr Berechnungen pro Zeiteinheit durchgeführt werden, wenn eine innere for-Schleife beteiligt ist als sonst. Dies bedeutet, dass bei gleicher Anzahl der durchzuführenden Berechnungen die mit einer inneren for-Schleife schneller beendet wird als die ohne. Dies ist eine maschinen- oder plattformunabhängige Technik zur Schleifenoptimierung, die in mehreren Programmiersprachen und getesteten Compilern oder Interpreten beobachtet wurde. Der Fall einer while-Schleife als innere Schleife war schlecht und in einigen Fällen sogar langsamer als eine Schleife ohne innere Schleife. Zwei Beispiele in Python zeigen eine while-Schleife mit einer inneren for-Schleife und eine while-Schleife ohne innere Schleife. Obwohl beide die gleiche Abschlussbedingung für ihre while-Schleifen haben, wird das erste Beispiel aufgrund der inneren for-Schleife schneller beendet. Die Variable innermax ist ein Bruchteil der Variablen maxticketno im ersten Beispiel.

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

Verweise