phpbar.de logo

Mailinglisten-Archive

[php] Templates allgemein

[php] Templates allgemein

Enrico Weigelt weigelt at metux.de
Mit Mai 5 12:35:18 CEST 2004


* 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