[spip-dev] Comparatifs performances PHP3 vs 4

Salut,

"PHP4 est nativement 10 fois plus rapide que PHP3"

Hum, deux ou trois fois plutôt, sur autre chose que les décimales de
PI

OK, j'ai été un peu schématique. PHP4 est nativement beaucoup plus
rapide que PHP3 (jusqu'à x10) avec un rapport dépendant de la nature
du code.

S'il arrive à remettre la main dessus, Matthieu proposera ses
résultats de benchs ici-même ...

Ca y est je les ai retrouvé !
Ci-joint le graphique de comparaison de PHP 3/4 avec d'autres
languages de script. Le taux transactionnel (nombre de pages que le
serveur peut délivrer par seconde) en fonction du nombre d'automates
de test.

Ces tests ont été réalisés avec une application composée de huit
modules effectuant des transactions bien précises :
- Des requêtes d'insertion, de selection en base de données (Oracle)
- L'utilisation de sessions (en fichiers pour php3)
- Un calcul algorithmique

On remarque donc que PHP4 est 6 fois plus performant que PHP3 et 15
fois plus en activant le Zend Optimizer. Ceci etant essentiellent du au
calcul algorithmique (Ce qui rejoint le calcul des decimales de PI)

Voila !

Hello,

"PHP4 est nativement 10 fois plus rapide que PHP3"

Pour montrer une fois de plus que j'exagérais mais qu'il y a
réellement un gain non négligeable entre PHP3 et PHP4, notamment au
niveau des regex, voici un petit bench de Jesus M. Castagnetto,
développeur PHP reconnu :

--------------------8<-------------------------------------------
[regex.test]
Sun Jun 4 04:23:31 PDT 2000
Tests of regex function speeds:

100,000 repeats (in seconds)
                PHP4 PHP3 ratio1
preg_match 5 19 .263
ereg 8 20 .4
ratio2 .625 .95

100,000 repeats (in seconds, no printing of ".")
                PHP4 PHP3 ratio1
preg_match 4 15 .267
ereg 5 15 .333
ratio2 .8 1.0

1'000,000 repeats (in seconds, no printing of ".")
                PHP4 PHP3 ratio1
preg_match 43 147 .293
ereg 48 150 .32
ratio2 .896 .98

PHP3: PHP 3.0.14
PHP4: PHP 4.0.0
ratio1: PHP4/PHP3
ratio2: preg_match/ereg

And the (trivial) code:

[regex_test.php]
<?php
$start = time();
$s = "<this> is a <string>";
$max = 1000000;
for ($i=0; $i<$max; $i++) {
        ereg("<([^<]+)>",$s);
//preg_match("/<([^<]+)>/",$s);
// if ($i % 100 == 0 && $i > 0)
// echo ".";
}
echo "Time: ". (time() - $start) . "sec ";
?>
--------------------8<-------------------------------------------

-Nicolas