Mailinglisten-Archive |
* Johannes Schlueter <schlueter at phpbar.de> [2004-05-04 12:45:25 +0200]: <snip> > > patTemplate löst diese Probleme und ist auch recht flott. > > Wenn ich mal die Zeit finde, implementiere ich das ganze auch nochmal > > direkt in C - dann dürfte es so ziemlich die schnellste template-engine > > auf Erden sein ;-) > > Ich habe schon ein paar solcher Versuche gesehen, in der Regel war es dann so, > dass die PHP-Version trotzdem schneller war (wenn man jetzt nicht gerade > "slowTemplate" nimmt) - frag' mich nicht warum das im Detail so ist, PHP > greift ja auch nurauf C-Funktionen zurück.... Naja, das kann viele Gründe haben, z.b. ist die Kopplung zwischen verschiedenen Sprachen immer recht teuer - man muß also zusehen, daß man möglichst wenige cross-calls hat, insbesondere wenn dabei Variablen transportiert werden. Außerdem muß man aufpassen, daß man nicht versucht, in C die gleichen Programmierstrategien wie in PHP anzuwenden und dabei bestimmte Operationen teuer zu simulieren (eine langsame hashtable-implementation und alle Strukturen via hashtables gebaut und schon hat man den Salat ...) <snip> > Anders sieht es jedenfalls aus wenn man mathematische Algorithmen&Co in PHP > implementiert, da ist die C-Version (wenn nicht ganz schlecht programmiert) > deutlich schneller. Aber mir konnte noch keiner einen Fall zeigen wo > Stringoperationen in C schneller waren als mit PHP, wenn man mal von Dingen > wie einzelnen Zeichen ersetzen oder so absieht. Ein some_strng[2] = 'e' in > C ist sicher schneller als ein some_string{2} = 'e' in PHP (wobei der Aufruf > der Extension-Funktion für C-Implementierung das ganze wohl wieder ausgleicht > *g*), aber sobald es zu str_replace, RegExps etc. kommt bekommt man messbare > Unterschiede -- zum Vorteil von PHP. Ich würde nicht sagen, daß PHP dort generell schneller ist, im Gegenteil: der Interpreter frißt immer Zeit. Allerdings ist das bei den Programmtypen für die man Scriptsprachen wie php verwendet, meist marginal. Ein guter Indikator ist z.b. das Verhältnis der verbrauchten Rechenzeit zwischen den jeweiligen nativen (z.b. extension-) oder durch Sprachkonstrukte gelieferten Funktionen (z.b hashtable-loopup) und dem Gesamtprogramm bzw. der Menge der Interpreter-Operationen. Ein einfaches preg_replace() auf einem Textblock wird (unter Verwendung derselben regex-engine) wohl in php nicht merkich langsamer sein als in C, weil die überwiegende Arbeit sowiso vom selben Code (regex-engine) erledigt wird und der php-interpreter nur 'n bissl drumrum tut (variable kopieren, native-call, usw) cu -- --------------------------------------------------------------------- Enrico Weigelt == metux IT service phone: +49 36207 519931 www: http://www.metux.de/ fax: +49 36207 519932 email: contact at metux.de cellphone: +49 174 7066481 --------------------------------------------------------------------- -- DSL ab 0 Euro. -- statische IP -- UUCP -- Hosting -- Webshops -- ---------------------------------------------------------------------
php::bar PHP Wiki - Listenarchive