Quantcast
Channel: PHP Gangsta - Der PHP Blog mit Praxisbezug » Benchmark
Viewing all articles
Browse latest Browse all 2

PHP 5.4.0 Beta1 Performance!

0
0

Ich bin zufällig auf eine Präsentation über die kommende PHP 5.4.0 Version gestossen, mit einer Liste aller entfernten Features, neuer Features, aber auch interessanten Performance- und Speicherverbrauchdaten. Informationen über Features sind ja schon etwas länger bekannt, und im Changelog findet man auch viele Informationen, aber ehrlich gesagt konnte ich es nicht glauben was da bei den Performance-Tests steht, das mußte ich selbst ausprobieren.

Hier Beispiel 1 aus der Präsentation:

/php537/php micro_bench.php
    Max memory usage 1048576 bytes.
    Running 27.608 s.

/php540/php micro_bench.php
    Max memory usage 524288 bytes.
    Running 13.254 s.

Hier Beispiel 2 aus der Präsentation:

/php537/php NewObjectClassTest.php
   Running 0.20629 s , 640616 bytes.
/php537/php StaticClassTest.php
   Running 0.35047 s, 640616 bytes.

/php540/php NewObjectClassTest.php
   Running 0.12018 s, 227808 bytes.
/php540/php StaticClassTest.php
   Running 0.10803 s, 227880 bytes.

Hier Beispiel 3 aus der Präsentation:

for ($count = 0; $count < 10000000; $count++) {
    $result = 100 + 100 - 100 * 100 / 100;
}

/php537/php mathTest.php
    Running 1.75259 s, 632176 bytes.

/php540/php mathTest.php
    Running 1.06825 s, 223208 bytes.

Das sind unglaubliche Werte, die wahrscheinlich nur erreicht werden können wenn man speziell einige Funktionen nutzt die verbessert wurden. Teilweise bis zu 75% Memory-Ersparnis und bis zu dreifacher Ausführungsgeschwindigkeit. In “normalen” Scripten dürfte die Performancesteigerung nicht so groß sein, oder?

Prüfen wir die Behauptung mal mit einem kleinen Benchmark-Script nach. Es ist sicherlich nicht sehr realitätsnah, aber immerhin besser als die spezialisierten Scripte von da oben. Ich habe mir das Script von php-benchmark-script.com heruntergeladen und dann 2 frische PHP Versionen kompiliert:

wget http://de3.php.net/get/php-5.3.8.tar.gz/from/de.php.net/mirror
tar -xzvf php-5.3.8.tar.gz
cd php-5.3.8
./configure --prefix=/usr/local/php5.3.8 --with-zlib --with-config-file-path=/usr/local/php5.3.8/etc --enable-mbstring --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-zip --with-imap --with-kerberos --with-imap-ssl --with-openssl --with-jpeg-dir --with-gd --with-gettext --with-freetype-dir --enable-pcntl --enable-ftp
make
sapi/cli/php -v
wget http://downloads.php.net/stas/php-5.4.0beta1.tar.gz
tar -xzvf php-5.4.0beta1.tar.gz
cd php-5.4.0beta1
./configure --prefix=/usr/local/php5.4.0beta1 --with-zlib --with-config-file-path=/usr/local/php5.4.0beta1/etc --enable-mbstring --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-zip --with-imap --with-kerberos --with-imap-ssl --with-openssl --with-jpeg-dir --with-gd --with-gettext --with-freetype-dir --enable-pcntl --enable-ftp
make
sapi/cli/php -v

und dann jeweils die bench.php ausgeführt. Hier die Ergebnisse:

PHP 5.3.8

sapi/cli/php /tmp/bench.php
--------------------------------------
|        PHP BENCHMARK SCRIPT        |
--------------------------------------
Start : 2011-09-29 17:52:30
Server : @
PHP version : 5.3.8
Platform : Linux
--------------------------------------
test_math                 : 5.281 sec.
test_stringmanipulation   : 6.455 sec.
test_loops                : 8.263 sec.
test_ifelse               : 4.988 sec.
--------------------------------------
Total time:               : 24.987 sec.

PHP 5.4.0beta1

sapi/cli/php /tmp/bench.php
--------------------------------------
|        PHP BENCHMARK SCRIPT        |
--------------------------------------
Start : 2011-09-29 18:21:47
Server : @
PHP version : 5.4.0beta1
Platform : Linux
--------------------------------------
test_math                 : 5.345 sec.
test_stringmanipulation   : 5.818 sec.
test_loops                : 6.865 sec.
test_ifelse               : 4.129 sec.
--------------------------------------
Total time:               : 22.157 sec.

Nach jeweils 3 Durchgängen, die alle ein ähnliches Ergebnis hatten (22 Sekunden zu 25 Sekunden), ist nun also klar: Von dreifacher Performance kann man nicht reden, aber >10% sind durchaus drin. Wäre natürlich interessant noch andere Tests zu sehen, die etwas realitätsnaher sind, und nicht von Datenbanken, Netzwerk oder ähnlichem beeinflusst werden. Ich habe gerade keins parat.

(PS: Die Werte hier stammen von einem VServer. Auf “richtiger” Hardware erhält man Laufzeiten zwischen 5 und 8 Sekunden. Dem relativen Vergleich tut das aber keinen Abbruch)


Viewing all articles
Browse latest Browse all 2

Latest Images





Latest Images