Warum eigentlich for statt while/do while?

  • Huhu,


    ich habe mir gerade mal Gedanken darüber gemacht wozu genau die for Schleife eigentlich gut ist.


    Als Erstes kam mir in den Kopf das sie eventuell schneller ist wenn man zählen möchte, erschreckenderweise stellte ich das Gegenteil fest:


    Ich ließ die while / do while und die for Schleife jeweils von 1 bis 100.000.000 zählen, dabei bekam ich folgendes Ergebnis bei meiner Zeitmessung:


    Code
    5.5393359661102    while
    5.1980168819427 do while
    5.9468669891357      for


    Wie man sieht brauchte die for Schleife fast eine Sekunde mehr als die do while Schleife, wobei allerdings bei den beiden while Schleifen die Variable natürlich vorher gesetzt werden musste, das heißt in meinen Augen das die do while Schleife 2 Funktionen 1 Sekunde schneller ausführt als die for Schleife eine Funktion, schon irgendwie erschreckend.


    Mein 2. Punkt der mir noch einfällt wäre natürlich Bequemlichkeit, mein Beispiel:


    PHP
    <span class="syntaxhtml"><br /><br /><span class="syntaxdefault"><?php<br />  </span><span class="syntaxkeyword">for(</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">1 </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword"><=</span><span class="syntaxdefault">100</span><span class="syntaxkeyword">; print </span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">.</span><span class="syntaxstring">'<br />'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++);<br /></span><span class="syntaxdefault">?><br /></span>Ist natürlich viel schöner zu schreiben als:<br /><span class="syntaxdefault"><?php<br />  $i </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">;<br />  while(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword"><= </span><span class="syntaxdefault">100</span><span class="syntaxkeyword">)<br />  {<br />    print </span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">.</span><span class="syntaxstring">'<br />'</span><span class="syntaxkeyword">;<br />    </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++;<br />  }<br /></span><span class="syntaxdefault">?><br /></span>Bei 2. Variante müssen wir sogar noch einen Funktionsblock setzen (ihgittihgitt)<br /></span>


    Was haltet denn ihr davon? Oder auch: Was wisst ihr darüber? Einfach Semantik? Aber ist Semantik nicht auch für bessere Performance gedacht? Ich bin überfragt :roll:

  • Interessant. Ist mir noch gar nicht so aufgefallen.
    Das heißt doch jetzt eigentlich, dass die for Schleife folgendermaßen zu beschreiben ist:


      braucht mehr Zeit (schlecht)
      Bequemlichkeit (gut)


    Tja, find ich wirklich auch ein wenig komisch.

  • Zitat von &quot;philipp e.&quot;


    braucht mehr Zeit (schlecht)


    Hehe, tja so kann man das sagen :twisted:


    Es sind zwar nur Bruchteil einer Sekunde, aber ich sehe das so:


    Als die Entwickler die for Schleife eingeführt haben mussten sie doch irgendwie daran gedacht haben das sie eine Schleife wollen die schneller zählt als while, DAS hat offensichtlich nicht geklappt :roll:

  • Es ist jetzt nicht so als hätte ich absolut keine Peilung, in meinem Beispiel habe ich gezählt, von 1 bis 100.000.000, und zum zählen nutzt man eben eine for Schleife.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!