Felix Riesterer: wenn mann auch unnötig viele Schleifen baut...

Beitrag lesen

Liebes Auge,

Du sagtest etwas zu diesem Code:

for($i=0;$i<10000;$i++)

{
   $ts=time();echo ".";flush();
   for($j=0;$j<1000;$j++)
   $test=str_replace('aaa','bbb',$testa);
   $ts_=$ts_+(time()-$ts);
   $ts=time();
   if (bcmod($i,100)==0)
      {
      echo '<br>'.$ts_.'<br>';
      $ts_=0;
      }
   }


>   
> Außerdem steckt da noch eine Schleife drin (`for($j=0;$j<1000;$j++)`{:.language-php}), die ohne Anweisung bleibt.  
  
ich möchte Dir hier widersprechen: for (...) Anweisung; bewirkt, dass "Anweisung" in jedem for-Schleifen-Durchlauf ausgeführt wird. Es braucht bei einer einzigen Anweisung keine geschweiften Klammern wie bei einem ganzen Anweisungs\_block\_. Deshalb wird in jedem der 10000 (zehnTAUSEND) Schleifendurchgänge (mit $i als Index) 1000x (tausendmal - mit $j als Index) die str\_replace-Funktion ausgeführt, sodass wir auf die lächerliche Summe von 10 000 000 (zehn Millionen) str\_replace-Ausführungen kommen (und die auf ein Array!).  
  
Ich schreibe einmal obigen Code mit anderen Einrückungen, dann wird es besser sichtbar:  
  
~~~php
for($i=0;$i<10000;$i++)  
    {  
    $ts=time();echo ".";flush();  
  
    for($j=0;$j<1000;$j++)  
       $test=str_replace('aaa','bbb',$testa);  
  
    $ts_=$ts_+(time()-$ts);  
    $ts=time();  
    if (bcmod($i,100)==0)  
       {  
       echo '<br>'.$ts_.'<br>';  
       $ts_=0;  
       }  
    }

Auch ich frage mich, wie jetzt da der Sinn erkennbar werden soll...

Liebe Grüße aus Ellwangen,

Felix Riesterer.