Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive