Roadsend PHP Compiler

Publié le 10/04/2008

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 !

comments powered by Disqus