2010-11-01 5 views
6

I que possible? pour par exemple. si je veux tester si str_replace() est plus rapide que preg_replace()?Calculer le temps nécessaire pour exécuter une certaine fonction

+0

duplication possible de [Une référence performance/référence PHP par fonction (ou par tâche) existe-t-elle?] (Http://stackoverflow.com/questions/2530610/does-a-php-per-function-ou -par-task-performance-benchmark-reference-exist) –

+0

Désolé, ne tenez pas compte du doublon, je pensais que les services de banc d'essai fournissaient le code source qu'ils utilisent, mais ils ne le font pas. –

+1

Vous voulez un profileur comme Zend_Debugger ou XDebug pour cela. Voir http://stackoverflow.com/search?q=profile+php+script – Gordon

Répondre

13

Vous pouvez exécuter la même ligne 10.000 fois (ou plus) dans votre script, et utiliser microtime(true) pour dire le temps qu'il a fallu:

microtime()

+1

+1 Ceci est la méthode standard. Il est important de le faire un grand nombre de fois (c'est-à-dire en boucle) pour que (a) vous obteniez une différence mesurable, et (b) pour que vous puissiez filtrer les écarts de vitesse entre un passage et un autre. – Spudley

+0

merci! Il semble qu'il n'y ait presque aucune différence entre les 2 fonctions que j'ai mentionnées :) str_replace semble parfois un peu plus rapide – Alex

+0

Je ne suis pas absolument sûr, mais l'interpréteur a un optimiseur, qui peut trouver que vous pouvez optimiser votre boucle, car il n'y a pas de variables changé dans les itérations de boucle. Donc, le meilleur moyen est d'utiliser des profileurs de code comme XDebug – seriyPS

25

La manière simple:

$time = microtime(true); // time in Microseconds 

// Your code here 

echo (microtime(true) - $time) . ' elapsed'; 

Le (er) moyen: Utilisez un profileur de code pour voir exactement combien de temps vos méthodes prendront.

6

J'ai trouvé cette réponse par 'bisko' dans le fil this.

$ start = microtime (vrai);

pour (...) { ....}

$ end = microtime (true);

echo ($ fin - $ start). ' secondes »;

La boucle for peut être remplacée par ce que vous voulez.

Questions connexes