Classe de calcul de temps d'éxecution

0/5 (2 avis)

Snippet vu 8 093 fois - Téléchargée 25 fois

Contenu du snippet

depuis le temps que je prends des codes sur ce site il fallait bien que je poste quelque chose

je cherhcais un compteur multiple de temps d'execution pour mon site
mais ne trouvant rien que des petits compteurs sur le site

j'ai donc créé très récemment une classe permettant de calculer le temps d'execution
elle fonctionne sur la basse d'un "message stack"

donc voici ma classe:

Source / Exemple :


<?php
/*
  Script par Stéphane Goetz
  
  ce script permet de créer a la volée des 
  compteurs de temps d'éxecution

  • /
class timeStack { // class constructor function timeStack() { $this->messages = array(); } // class methods function open($class) { $this->messages[] = array('class' => $class, 'time' => array_sum(explode(' ', microtime()))); } function close($class) { for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) { if ($this->messages[$i]['class'] == $class) { $this->messages[$i]['time'] = round(array_sum(explode(' ', microtime())) - $this->messages[$i]['time'], 4); } } } function display($class = 'view_all_stacks') { if($class == 'view_all_stacks'){ echo '<table border="1">'; echo '<tr><th>Nom</th><th>Temps</th></tr>'; for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) { echo '<tr><td>'.$this->messages[$i]['class'].'</td><td>'.$this->messages[$i]['time'].'</td></td>'; } echo '</table>'; } else { for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) { if ($this->messages[$i]['class'] == $class) { echo '<div style="border-color:red;">'.$this->messages[$i]['class'].': '.$this->messages[$i]['time'].'</div>'; } } } } function reset() { $this->messages = array(); } function size($class) { $count = 0; for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) { if ($this->messages[$i]['class'] == $class) { $count++; } } return $count; } } ?> <? //inclusion et création de la classe include('time_stack.php'); $timeStack = new timeStack; //ouverture d'un compteur de test $timeStack->open('test'); //attente pour le test sleep(4); //fermeture du compteure $timeStack->close('test'); //si le compteur test existe if ($messageStack->size('test') > 0) { //affichage du compteur de test $timeStack->display('test'); } // si il n'y a pas de paramètre dans la fonction display //elle affiche un tableau avec toutes les données $timeStack->display(); ?>

Conclusion :


désolé si le code n'est pas beaucoup commenté
je n'ai pas pris le temps de le faire

mais le script est facile à utiliser

A voir également

Ajouter un commentaire Commentaires
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
27 août 2006 à 21:21
"je cherhcais un compteur multiple de temps d'execution pour mon site
mais ne trouvant rien que des petits compteurs sur le site"

http://www.phpcs.com/codes/PHP5-CLASSE-BENCHMARK_35497.aspx

Petit mais costaud :)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
27 août 2006 à 14:40
Salut...

C'est pas mal mais en cas de bench multiple c'est chiant de devoir créer un nom pour l'index... perso j'utilise un index numérique qui s'incrémente à chaque nouvelle entrée l'index étant renvoyé par la méthode de création du bench... ce qui donne... .. .

$benchId = $bench->sart();

... le code ...

$bench->stop($benchId);

C'est pas grand chose mais je trouve plus simple... comme ça tu peux retrouver un bench précis grace à l'id généré... par contre dans ton cas je trouve que tu te prend la tête pour retrouver le bench en cours...

pour quoi ne pas faire...

function open($class)
{
if(!isset($this->messages[$class]))
$this->messages[$class] = array_sum(explode(' ', microtime()));
else
... on consigne une erreur le bench $class existant déja ...
}

function close($class)
{
if(isset($this->messages[$class]))
$this->messages[$class]= round(array_sum(explode(' ', microtime())) - $this->messages[$class], 4);
else
... on consigne une erreur le bench $class n'existant pas ...
}

En même temps tu gère ça avec le nom des class ou code benché donc y a pas trop d'alternative me dira tu... .. .

@ tchaOo°

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.