Roadsend PHP Compiler

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 !

Ça peut vous intéresser aussi


Je compile tu compiles

Lorsque l’on travaille sur Linux ou Unix en général,...


PHP optimisations et astuces

On vient d’en discuter avec Guillaume, et on est ...


JDLL conférence nouveaux compilateurs

Il est temps de vous prévenir, pour une 11ième année ...


vim est un IDE PHP

Après pas mal de temps passé sur Eclipse, la lourdeur ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.