Bonjour, je cherche à évaluer et tester les vitesses d'exécution de différents scripts et j'ai donc fais une petite classe pour aller plus vite..
Pour tester le script, je compare la vitesse de in_array() et d'une fonction utilisateur utilisant foreach pour obtenir le même résultat.
Pour plus de précision je fais exécuter 100 fois le script sur chaque fonction.
Le problème est que microtime() du temps de fin - le temps de début renvoit une valeur erronée (ex: 10 sec) suivi de -005..
Je me doute bien qu'il y a un problème mais lequel ?
La classe :
Le code d'exéction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 <?php class ex_timer { private $timers; public function start($id) { $this->timers[$id]["t_s"] = microtime(true); } public function stop($id) { $this->timers[$id]["t_e"] = microtime(true); } public function save($u_fichier,$id) { if(!isset($this->timers[$id])) die("EX TIMER : ID inconnu"); if(!isset($this->timers[$id]["t_s"])) die("EX TIMER : Impossible de sauvegarder"); if(!isset($this->timers[$id]["t_e"])) die("EX TIMER : Impossible de sauvegarder"); $fo = fopen($u_fichier,"a"); fputs($fo,$this->timers[$id]["t_e"]-$this->timers[$id]["t_s"]."\n"); fclose($fo); } public function result($id) { return ($this->timers[$id]["t_e"])-($this->timers[$id]["t_s"]); } public function compare_files($uf1,$uf2) { if(!file_exists($uf1) or !file_exists($uf1)) die("EX TIMER : Fichier(s) introuvable(s)"); $f1 = array_map("rtrim",file($uf1)); $f2 = array_map("rtrim",file($uf2)); // m = moyenne $m_f1 = 0; $m_f2 = 0; foreach($f1 as $valeur) { $m_f1 += $valeur; } foreach($f2 as $valeur) { $m_f2 += $valeur; } $m_f1 /= count($f1); $m_f2 /= count($f2); if($m_f1 < $m_f2) $comp = "Le temps n°1 est le plus rapide (".$m_f2-$m_f1.") => ".$m_f2/$m_f1."x plus rapide"; elseif($m_f1 > $m_f2) $comp = "Le temps n°2 est le plus rapide (".$m_f1-$m_f2.") => ".$m_f2/$m_f1."x plus rapide"; return " <table bgcolor=\"black\" color='white' border=1 cellpadding=3 cellspacing=0> <tr> <td><b>caract.\fichiers</b></td><td><b>Fichier N°1</b></td><td><b>Fichier N°2</b></td> </tr> <tr> <td><b>Temps moyen d'exécution</b></td><td><b>".$m_f1."</b></td><td><b>".$m_f2."</b></td> </tr> <tr> <td colspan=3><b>".$comp."</b></td> </tr> </table> "; } } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?php require_once("ex_timer.class.php"); $t = new ex_timer; function in_array_fe($needle,$haystack) { foreach($haystack as $valeur) { if($needle == $valeur) return true; } } $tab = array("jambon","fromage","riz","pates","pain","chocolat","biscuit"); for($i=0;$i<1;$i++) { $t->start("foreach"); if(in_array_fe("pain",$tab)) $trouve = true; $t->stop("foreach"); $t->save("foreach.txt","foreach"); } for($i=0;$i<1;$i++) { $t->start("in_array"); if(in_array("pain",$tab)) $trouve = true; $t->stop("in_array"); $t->save("in_array.txt","in_array"); } //echo $t->result("if"); ?>









Répondre avec citation



Partager