bench
Mesurez les performences de vos scripts
La classe PHP bench vous permet de faire des Benchmarks détaillés de vos Scripts. Vous avez également la possibilité de placer des points de contrôle intermédiaires, qui vous indiqueront en détail quelle partie de votre code PHP met plus ou moins de temps a s'exécuter.
Cette classe fonctionne aussi bien en PHP4 qu'en PHP5.
Les Méthodes
- bench - Nouvelle Instance
- start_bench - Début du benchmark
- end_bench - Fin du benchmark
- return_simple_result - Retourner le résultat simple
- return_result - Retourner le résultat détaillé
Exemples
La Source
<?php
/*
* Par fablezouave
* webmaster@scriptsphp.net
*
*/
class bench {
var $start;
var $decimals;
var $Result;
/*
Constructeur de la classe
(initialisation des variables)
*/
function bench() {
$this->start = 0;
// Nombre de chiffres après la virgule
// pour l' affichage des résultats
$this->decimals = 10;
$this->Result = array();
}
/*
Cette méthode marque le début du benchmark
*/
function start_bench() {
$this->start = bench::get_microtime();
}
/*
Cette méthode marque la fin du benchmark
*/
function end_bench() {
$end = bench::get_microtime() - $this->start;
$this->Result['End'] = $end;
}
/*
Cette méthode sert à récupérer
des temps intermédiaires
*/
function add_flag($txt) {
$flag = bench::get_microtime() - $this->start;
$this->Result[$txt] = $flag;
}
/*
Cette méthode retourne un temps exploitable.
*/
function get_microtime(){
$T = explode(' ', microtime());
$time = $T[1].substr($T[0], 1);
return (float)$time;
}
/*
Cette méthode retourne le nombre $value
formaté avec n chiffres après la virgule
*/
function format($value, $n=0) {
$dec = $n==0 ? $this->decimals : $n;
return number_format((float)$value, $dec);
}
/*
Cette méthode retourne le résultat des benchs
sous la forme d' un tableau HTML.
*/
function return_result() {
$prec = 0;
$inter = 0;
$ret = '<table bordercolor="black" border="1">';
$ret .= '<tr bgcolor="#cccccc">';
$ret .= '<td>Evénement</td>';
$ret .= '<td>Temps depuis le début</td>';
$ret .= '<td>Temps depuis le dernier flag</td>';
$ret .= '<td> - Pourcentage - </td>';
$ret .= '</tr>';
foreach($this->Result as $key => $val) {
$inter = $val - $prec;
$prec = $val;
$percent = ($inter/$this->Result['End'])*100;
$ret .= '<tr>';
$ret .= '<td>'.$key.'</td>';
$ret .= '<td>'.bench::format($val).' s</td>';
$ret .= '<td>'.bench::format($inter).' s</td>';
$ret .= '<td>'.bench::format($percent, 2).' % </td>';
$ret .= '</tr>';
}
$ret .= '</table>';
return $ret;
}
/*
Cette méthode retourne un simple résultat
correspondant au temps passé entre
start_bench() et end_bench()
*/
function return_simple_result() {
$r = bench::format($this->Result['End']) ;
$ret = "Page générée en $r secondes.";
return $ret;
}
} // end class
?>
/*
* Par fablezouave
* webmaster@scriptsphp.net
*
*/
class bench {
var $start;
var $decimals;
var $Result;
/*
Constructeur de la classe
(initialisation des variables)
*/
function bench() {
$this->start = 0;
// Nombre de chiffres après la virgule
// pour l' affichage des résultats
$this->decimals = 10;
$this->Result = array();
}
/*
Cette méthode marque le début du benchmark
*/
function start_bench() {
$this->start = bench::get_microtime();
}
/*
Cette méthode marque la fin du benchmark
*/
function end_bench() {
$end = bench::get_microtime() - $this->start;
$this->Result['End'] = $end;
}
/*
Cette méthode sert à récupérer
des temps intermédiaires
*/
function add_flag($txt) {
$flag = bench::get_microtime() - $this->start;
$this->Result[$txt] = $flag;
}
/*
Cette méthode retourne un temps exploitable.
*/
function get_microtime(){
$T = explode(' ', microtime());
$time = $T[1].substr($T[0], 1);
return (float)$time;
}
/*
Cette méthode retourne le nombre $value
formaté avec n chiffres après la virgule
*/
function format($value, $n=0) {
$dec = $n==0 ? $this->decimals : $n;
return number_format((float)$value, $dec);
}
/*
Cette méthode retourne le résultat des benchs
sous la forme d' un tableau HTML.
*/
function return_result() {
$prec = 0;
$inter = 0;
$ret = '<table bordercolor="black" border="1">';
$ret .= '<tr bgcolor="#cccccc">';
$ret .= '<td>Evénement</td>';
$ret .= '<td>Temps depuis le début</td>';
$ret .= '<td>Temps depuis le dernier flag</td>';
$ret .= '<td> - Pourcentage - </td>';
$ret .= '</tr>';
foreach($this->Result as $key => $val) {
$inter = $val - $prec;
$prec = $val;
$percent = ($inter/$this->Result['End'])*100;
$ret .= '<tr>';
$ret .= '<td>'.$key.'</td>';
$ret .= '<td>'.bench::format($val).' s</td>';
$ret .= '<td>'.bench::format($inter).' s</td>';
$ret .= '<td>'.bench::format($percent, 2).' % </td>';
$ret .= '</tr>';
}
$ret .= '</table>';
return $ret;
}
/*
Cette méthode retourne un simple résultat
correspondant au temps passé entre
start_bench() et end_bench()
*/
function return_simple_result() {
$r = bench::format($this->Result['End']) ;
$ret = "Page générée en $r secondes.";
return $ret;
}
} // end class
?>