phpbar.de logo

Mailinglisten-Archive

Re: [php] Komisches Schleifenverhalten
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] Komisches Schleifenverhalten



Hi,

Ich bin da zwar kein experte drin, aber php3 ist keine interpreter-sprache,
sondern lediglich ein preprozessor.

Interpreter optimieren einen solchen code ueblicherweise intern,
um nur die benoetigten teile einer schleife ablaufen zu lassen.
Zumeist besitzen sie eigene preprozessoren, die die schrift erstmal
in eine form bringt, die schneller und ohne weitere syntax-fehlerpruefungen
interpretiert werden kann.
(Compiler uebersetzen den code ja sowieso erstmal)

Das problem ist, dass php nicht die "alleinige herrschaft" ueber den code hat.
Php interpretiert ja lediglich die teile, die fuer es vorgesehen
sind und ueberlaesst den rest dem web-server.

Aus diesem Grund kann php da keine optimierungen dran vornehmen, da
es ja selber garnicht weiss, wie der webserver auf den code reagiert,
der php unbekannt ist.
(Naja, es koennte schon - aber das waere eine recht erhebliche arbeit,
die sehr fehleranfaellig waere)

Das wort "preprozessor" beinhaltet ja schon, dass es lediglich eine
"vorverarbeitung" des codes vornimmt und den rest ignoriert. Dabei ist
es absolut ueblich, dass keine code-optimierung vorgenommen wird.
(Auch bei c-compilern, die ja ebenfalls meist ueber preprozessoren
verfuegen, die genauso "leicht zu ueberlisten" sind.)

Um das aber ganz genau zu erfahren, empfehle ich "alten c-programmierern"
doch einfach mal in den sourcecode von php zu schauen :)

bye,
wilfried henseler

-----Ursprüngliche Nachricht-----
Von: Emilio Paolini <ep_(at)_IM-NETZ.de>
An: PHP-Liste Deutsch <php_(at)_solix.wiso.Uni-Koeln.DE>
Datum: Dienstag, 1. Dezember 1998 13:06
Betreff: [php] Komisches Schleifenverhalten


>Moin Liste!
>
>Als eines unserer Module ein voellig abartiges Zeitverhalten an den
>Tag legte und fuer eine Art grep statt geschaetzten 2-4 Sekunden
>(wie z.B. auch das grep Kommando) nun je nach Rechner bis zu 200
>Sekunden gebraucht hat, haben wir nach langer Suche ein merkwuerdiges
>Zeitverhalten von Schlafen festgestellt.
>
>Als "alte" C-Programmierer haetten wir das so nicht erwartet, liegt
>das vieleicht an dem interpretative Character von PHP, oder machen
>wir einen Denkfehler ?
>
>Hier mal ein Snippet, bei dem die zweite Schleife auf meinem System
>ca. 7 mal so lange braucht wie die erste, obwohl sie das gleiche,
>naemlich nichts macht.
>
>---------------------SCHNIPP----------------------
>
><?php
>
>//-----------------------------------------
>//---( Erste Schleife mit Zeitmessung )---
>$TStart= time();
>for($i= 0; $i < 2500; $i++)
>        {
>        continue;
>        echo "Das wird nie ausgegeben...";
>        }
>$Dauer= time() - $TStart;
>echo "<BR>Dauer: $Dauer";
>
>//-----------------------------------------
>//---( Zweite Schleife mit Zeitmessung )---
>$TStart= time();
>for($i= 0; $i < 2500; $i++)
>        {
>        continue;
>        echo "Das wird nie ausgegeben...";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        if(1==2) echo "Das ist verrueckt!";
>        }
>$Dauer= time() - $TStart;
>echo "<BR>Dauer: $Dauer";
>
>?>
>
>--------------------
>
>
>Bin mal gespannt, ob einer was dazu sagen kann,
>ansonsten muss ich's mal uebersetzen und an die
>englisch-sprachige Liste posten...
>
>By(e) Emilio Paolini
>
>--
>   I M - N E T Z___________________________________________________
>   Internet Marketing - Online Applikationen - Community Management
>         Referenzen sprechen fuer sich  -> http://www.IM-NETZ.de/
> ______________FON: +49 30 4511000 / MOBIL: +49 (0)177 4512000


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive