Test de performance

Samedi 19 août 2006 1 réaction

Voici 3 tests de performance :

  • Les 2 premiers comparants 2 méthodes différentes pour aboutir au même résultat.
  • Le dernier comparant 2 méthodes permettant d’obtenir un résultat similaire.

Screenshot #1
Premier test : [$a = $a + $b] vs. [$a += $b]
Ce premier test permet de comparer l’execution de 100 000 itérations d’une boucle effectuant $a = $a + $b et une autre boucle effectuant elle aussi 100 000 itérations de $a += $b.
On constate alors que le fait d’utiliser la méthode $a = $a + $b ralentit beaucoup l’execution du script (presque de 3fois).
Bien sur, ceci ne se ressent qu’a grande échelle, mais quand on peut optimiser son script même à petite échelle, pourquoi s’en priver ?

Privilégiez donc l’utilisation de l’opérateur += lorsque vous souhaitez ajouter une valeur à la valeur précédente d’une variable.
Notez également que le rapport de performance est le même pour tous les opérateurs du type +=, -=, *=, .=, /=, etc…

Second test : array() vs. chaine [Voir le screenshot]
En partant du principe que l’ont veut afficher une chaine de 1000 caractères aléatoires, j’ai voulu comparer si l’accès aux caractères d’une chaine était plus rapide que l’accès à une valeur d’un array.
J’ai donc créé un array avec les 26 lettres de l’alphabet ainsi que les 10 chiffres de 0 à 9. Puis j’ai fait de même avec une chaine de caractère, simplement en concaténant les caractères les uns aux autres pour ne former qu’une seule chaine.
J’ai ensuite lancé 2 boucles distinctes affichant à leur tour 1000 fois un caractère provenant de l’array pour la première boucle, et de la chaine pour la seconde boucle, à l’aide de la fonction mt_rand().
On constate alors que l’accès aux caractères par la chaîne est presque 2 fois plus long que par l’array.
Donc même si l’array est plus long à définir que la chaîne, priviligiez le dans vos codes afin de ne pas subir de baisses de performance.

Dernier test : array vs. shuffle(array) [Voir le screenshot]
Le but de ce dernier test était de créer une chaine de 100 caractères aléatoires, et de voir quelle méthode permettrait d’avoir une chaine parfaitement aléatoire et le plus vite possible. La méthode est, pour l’array simple, de faire comme le test précédent, et pour le shuffle(array), et bien simplement de mélanger les valeurs contenues dans l’array à l’aide de la fonction shuffle().
On constate alors que les 2 chaines sont aussi aléatoires l’une que l’autre et que la seconde aurait très bien pu être générée par la première méthode. De plus, la seconde méthode est 2 fois plus longue que la première. Pour ce type de cas la fonction shuffle est donc à exclure.

[Ces tests ont été effectués d'après une demande de Gounlaf]
Si vous avez des questions, ou des suggestions de test, n’hésitez pas en les laissant dans vos commentaires à la suite de ce post ;)

Informations & Liens

Utilisez les liens suivants pour être au courant des réactions à cet article, diffuser cet article et voir les autres articles de la même catégorie.

Informations

Flux RSS & Liens

Catégorie(s)

Tags / Mots-clés

Autres Articles

Commentaires

#1
Répondre à ce commentaire
Gounlaf
Mardi 29 août 2006 à 3:32

Merci :)
Très pratique ces tests ;)

Trackback

Ajoutez un commentaire

Prenez un moment pour commenter cet article et me dire ce que vous pensez. Quelques commandes classiques de formatage HTML sont autorisées :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> .