[Benchmark] Appel de fonctions : PHP vs Python

19 février 2007,

Aujourd’hui nous allons voir un petit test de performance sur des appels de fonctions récursifs grâce à la suite de Fibonacci dans deux langages distincts : le PHP et le Python.
Ce test a été réalisé sur la machine suivante :
Intel P4 3.2 Ghz, 1Go de Ram et accompagné d’une distribution Gnu/Linux Ubuntu Edgy Eft.

Version de Python : 2.4.4
Version de PHP : 5.1.6

Voici donc la version du script en PHP nommé test.php :

function test( $n )
{
if( $n <= 1 )return $n;
return test( $n - 1 ) + test( $n - 2 );
}
test( 35 );

et voici la version Python nommé test.py :

def test( n ):
if n <= 1:
return n
return test( n - 1 ) + test( n - 2 )
if __name__ == “__main__”:
test( 35 )

Maintenant que nous avons réalisé les deux scripts, il ne reste plus qu’à les exécuter. Pour cela nous allons utiliser un petit utilitaire fort sympathique (time) afin de connaître le temps d’exécution de chacun d’entre eux.

Voici donc le lancement du script PHP:

$ time php test.php

Les résultats que j’ai pu obtenir sur ma machine :

real 0m26.236s
user 0m25.846s
sys 0m0.012s

Voici donc le lancement du script Python:

$ time python test.py

Les résultats que j’ai pu obtenir sur ma machine :

real 0m15.110s
user 0m15.077s
sys 0m0.004s

Il semblerait donc que Python soit réellement plus performant sur ce type d’opération, mais bien sur on ne peut pas choisir un langage uniquement sur ce type comparatif. Néanmoins, il peut être intéressant de connaître les performances d’un langage avant de faire son choix.

2 Commentaires

filt3rek, le 16 décembre 2007 à 20:55

Salut ! :)
Pourquoi ne pas faire un petit test sur un printf ? :)
Parce que bon , Fibonacci carbonara ^^
Bon allez , jt’embete plus !

remram44, le 13 avril 2008 à 16:53

Petite précision, Lua met 5.8 secondes pour le même programme chez moi, et j’ai un processeur simple coeur à 1.73 GHz…
Programme utilisé :
function test(n)
if n <= 1 then return n end
return test(n-1) + test(n-2)
end
test(35)

real 0m5.851s
user 0m5.780s
sys 0m0.016s


Ajouter un commentaire