Roadsend PHP Compiler

Tags:: php :: compiler :: bench

Tien pendant que je suis encore là, j'ai testé le compilateur PHP Roadsend. En gros, Roadsend permet de compiler un code PHP en binaire natif. Je voulais voir si on pouvait gagner vraiment du temps en exécution, ou si c'était un peu de la fumisterie. Et bien j'ai été surpris ! J'ai compilé PHP Roadsend avec le support PCRE pour le fun (par contre j'ai eut des soucis avec PDO, je verrai ça plus tard). Bref voici un bout de code que je compile:


<?
$pDest = "https://toto";

//change this
$iter = 1500000;

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;

for ($i=0;$i<$iter;$i++){
    if (preg_match(';^((http(s)?://)|(ftp(s)?://));',$pDest)){
        //echo "ok 2
";
    }
}
$mtime = microtime();
$mtime = explode("
",$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = ($endtime - $starttime);
echo "
".$totaltime." seconds";
echo "

";
?>
 

Et voici la ligne qui compile, puis éxécute le binaire. Notez les temps exécutés...


[patachou@localhost roadsend-php-2.9.5]$ pcc montest2.php
[patachou@localhost roadsend-php-2.9.5]$ ./montest2
1.55335593224 seconds
[patachou@localhost roadsend-php-2.9.5]$ php ./montest2.php
6.9388689994812 seconds
 

Et oui, 1.5 secondes contre près de 7 secondes en PHP... 1500000 d'itérations donne un bon résultat de bench (avec regexp en plus...).

Bref, regardons juste le poids:


18K montest2
477 montest2.php
 

Normal... Je vérifie un petit truc en passant:


[patachou@localhost roadsend-php-2.9.5]$ ldd montest
        linux-vdso.so.1 =>  (0x00007fffa59fe000)
        libphp-runtime_u-3.0b.so => /usr/local/lib/libphp-runtime_u-3.0b.so (0x00002aaaaaaad000)
        libprofiler_u-3.0b.so => /usr/local/lib/libprofiler_u-3.0b.so (0x00002aaaaae61000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000003da1200000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003da0e00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003da0a00000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003d9f800000)
 

Cela dit, pour que le script "montest2.php" puisse marcher, il faut php d'installé... alors que pour le binaire, je ne fourni que les ".so" sous linux ou les ".dll" sous windows.

Alors évidamment, on ne va pas faire des applications web mais plutôt des programmes clients lourds. En fait, PHP Roadsend permet de coder en PHP ce que vous ne voulez pas coder en C/C++ (héhé). Sachez que vous pourrez utiliser glade/GTK pour faire des applications fenêtrée.

Je ne sais pas ce que ça vaut, mais je m'y pencherai bien un de ces 4. A noter donc !

Pas de commentaire pour le moment

Ajouter un commentaire
Veuillez répondre à la question suivante : Indiquez en chiffre ce que vaut deux et deux

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F56

Ohloh profile for Metal3D

Suivre ce site:

Vous êtes déjà

à suivre ce site via RSS.
RSS feed
You need to upgrade your Flash Player