PHP Benchmark (Upd.)

Sebastian Bergmann hat in seinem Blog vor einer Weile einen Benchmark über die Performance von PHP 4.3.11, PHP 5.0.4 und der damaligen Entwicklerversion von PHP 5.1 veröffentlicht. Da PHP 5.1 mittlerweile schon in Version 5.1.2 vorliegt und es auch in der 4er Reihe in paar Updates gab, hab ich die Benchmarks erneut durchgeführt. Wie Sebastian habe ich das Skript aus dem CVS von php.net herangezogen.
Die reinen Zahlen sind sicherlich nicht sonderlich aussagekräftig, das Verhältnis der Ausführungsgeschwindigkeiten von PHP 5.1.2 gegenüber PHP 4.4.2 und PHP 5.0.5 ist jedoch beachtlich. Zwar werden die 400% Geschwindigkeitssteigerung aus Sebastians Benchmark nicht erreicht, allerdings war PHP 5.1.2 (egal mit welchem Execution Model) bei den durchgeführten Tests mehr als doppelt so schnell wie PHP 4.4.2 und 5.0.5.
Zwischen den verschiedenen Dispatch Methoden (CALL, GOTO und SWITCH) gibt es jedoch keine großartigen Unterschiede. Die paar Millisekunden Abweichung sind wohl auf Meßungenauigkeit zurückzuführen.
UPDATE: Und wie es der Zufall so will, hat Sebastian Bergmann seinen Benchmark heute aktualisiert. Der Schwerpunkt liegt allerdings im Unterschied verschiedener GCC Versionen (GCC 3.4.5, GCC 4.0.2 und GCC 4.1.0.) anstatt verschiedener PHP Versionen.
AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ / 512 KB Cache / 1024 MB RAM Linux x86_64 2.6.14-gentoo-r2 gcc version 3.4.5 (Gentoo 3.4.5, ssp-3.4.5-1.0, pie-8.7.9) CFLAGS="-O2 -march=k8 -pipe" ./configure --disable-cgi --disable-all PHP 4.4.2 simple 1.128 simplecall 0.681 simpleucall 0.919 simpleudcall 1.029 mandel 4.399 mandel2 4.961 ackermann(7) 1.674 ary(50000) 0.151 ary2(50000) 0.119 ary3(2000) 2.164 fibo(30) 2.733 hash(50000) 0.188 hash2(500) 0.319 heapsort(20000) 0.881 matrix(20) 0.821 nestedloop(12) 1.858 sieve(30) 0.852 strcat(200000) 0.095 ------------------------ Total 24.971 PHP 5.0.5 simple 1.037 simplecall 0.693 simpleucall 0.917 simpleudcall 0.996 mandel 3.680 mandel2 4.064 ackermann(7) 1.408 ary(50000) 0.139 ary2(50000) 0.109 ary3(2000) 2.120 fibo(30) 2.567 hash(50000) 0.169 hash2(500) 0.324 heapsort(20000) 0.840 matrix(20) 0.821 nestedloop(12) 1.537 sieve(30) 0.882 strcat(200000) 0.095 ------------------------ Total 22.397 PHP 5.1.2 (CALL) simple 0.384 simplecall 0.382 simpleucall 0.531 simpleudcall 0.627 mandel 1.118 mandel2 1.321 ackermann(7) 0.944 ary(50000) 0.101 ary2(50000) 0.079 ary3(2000) 1.013 fibo(30) 1.591 hash(50000) 0.122 hash2(500) 0.095 heapsort(20000) 0.325 matrix(20) 0.299 nestedloop(12) 0.672 sieve(30) 0.476 strcat(200000) 0.049 ------------------------ Total 10.128 PHP 5.1.2 (GOTO) simple 0.386 simplecall 0.384 simpleucall 0.528 simpleudcall 0.625 mandel 1.125 mandel2 1.324 ackermann(7) 0.972 ary(50000) 0.100 ary2(50000) 0.080 ary3(2000) 1.003 fibo(30) 1.587 hash(50000) 0.122 hash2(500) 0.095 heapsort(20000) 0.327 matrix(20) 0.297 nestedloop(12) 0.665 sieve(30) 0.478 strcat(200000) 0.050 ------------------------ Total 10.146 PHP 5.1.2 (SWITCH) simple 0.384 simplecall 0.383 simpleucall 0.529 simpleudcall 0.631 mandel 1.118 mandel2 1.319 ackermann(7) 0.963 ary(50000) 0.099 ary2(50000) 0.080 ary3(2000) 1.056 fibo(30) 1.593 hash(50000) 0.121 hash2(500) 0.094 heapsort(20000) 0.329 matrix(20) 0.294 nestedloop(12) 0.670 sieve(30) 0.471 strcat(200000) 0.049 ------------------------ Total 10.185

