[Php] Class de chronometrage
Par JC le dimanche 14 septembre 2008, 12:04 - Programmation - Lien permanent
Il souvent utile pour un programmeur de savoir si son code est rapide ou non. Le temps d'execution est également souvent très different d'une plateforme à une autre. (En local ou sur un hebergement mutualisé)
Voila une petite classe ecrite pour php5 que j'utilise sur tous mes sites pour leurs developements.
Cette classe est rapide et simple à mettre en oeuvre et à utiliser. (Et ne consomme pas de ressource.) Vous retrouverez en pièce jointe les deux fichiers exposés ci-dessous.
Fichier index.php d'utilisation de la class @@<?php
- Exemple d'utilisation de class de Chronometrage
- Author: JC, Date: 2008-03-29
- Inclusion du timer
include('timer.php');
- Construction du timer, utilisation de 4chiffre après la virgule,
$timer = new timer(4);
- Démarrage du chronometre nommé "main"
$timer->start('main');
- codes divers à chronometrer
for ($i=0;$i<1000000;$i++) { $j = $i; }
- Arret du chronometre
$timer->stop('main');
- Affichage du temp d'execution du code
echo $timer->get('main'); ?>@@
Fichier de la class elle-même @@<?php
- Class de chronometrage
- Author: JC, Date: 2008-03-29
class timer {
private $lengh = 0; private $timers = array();
# Constructeur et selection de 3 chiffres après la virgule si ce n'est specifié
function __construct($lengh=3) {
$this->lengh = $lengh;
}
# Démarrage d'un chronometre
public function start($name='default') {
$this->timers$name'start' = explode(' ', microtime());
}
# Arret d'un chronometre
public function stop($name='default') {
$this->timers$name'stop' = explode(' ', microtime());
return isset($this->timers$name'start') ? TRUE : FALSE;
}
# Récuperation d'un chronometre
public function get($name='default') {
if (!isset($this->timers$name'start')) {
return 0; } if (!isset($this->timers$name'stop')) { $stop_time = explode(' ', microtime()); } else { $stop_time = $this->timers$name'stop'; }
$current = $stop_time1 - $this->timers$name'start'1;
$current += $stop_time0 - $this->timers$name'start'0;
return sprintf('%.'.$this->lengh.'f',$current);
}
} ?>@@
Vous n'êtes pas obligé d'arrêter un chrono pour l'afficher vous pouvez lancer plusieurs chronos, et vous pouvez relancer un chrono même si a deja démarré.