pour les gens qui ont un esprit logique :) [algorithme] - Algo - Programmation
Marsh Posté le 14-06-2003 à 00:21:59
t'es sûr que ça va vraiment marcher ton truc?... les systèmes sont multi-tâche maintenant. Pour des petites fonctions comme ça oui ça posera pas de pb, mais si ton prog s'arrête pour laisser la main à un autre processus bah tes temps seront faussés...
sous UNIX c assez flagrant
Tu prends deux processus A et B
A contient ta fonction
B c'est un otre prog sans importance
A se lance, il note le temps
paf le système passe la main à B
B se lance, il met qq tps à s'exécuter
A reprend la main et note le tps de fin... et forcément c'est faussé.
Après ptet que je me trompe, mais shui pas sûr que ce soit faisable en fait
Marsh Posté le 14-06-2003 à 00:26:48
bin ouais mais c pour du JS que je fais ca
heheh je code un OS en javascript nan pas vraiment mais une grosse usine a gaz de plus de 15000 lignes de code et c assez animal ce truc donc je veux benchmarker pour optimiser!
voila en fait j'ai pensé à ça, dites moi si ca vous parait correct ? (pas encore testé, j'ai peur !!! )
|
Marsh Posté le 14-06-2003 à 09:09:33
pour ce qui veulent résoudre ce problème en C++
http://boost.org/libs/timer/timer.htm#Class progress_timer
http://minilien.com/?yKRmarbbwj
d'un autre coté, le truc que tu veux faire, ça s'appelle un profiler si je ne m'abuse
Marsh Posté le 14-06-2003 à 09:50:00
bon bin j'ai réussi à le faire finalement çà me donne des stats très très intéressantes
voici le code au cas ou:
(avec fncsInfo un tableau)
|
Marsh Posté le 24-06-2003 à 16:46:40
Essaye de te documenter et évite d'écrire des messages trop long ça donne pas trop envie de lire
Marsh Posté le 14-06-2003 à 00:15:55
salut
je suis entrain de coder un peu comme un porc et donc je suis entrain de developper un petit truc pour benchmarker tous les appels de fonctions etc... il fadurait qu'au final je puiss faire une stat assez sympa, de ce style la:
nom de fonction
nombre d'appels
temps d'exécution total
pour cela je construis deux fonctions,
dbgstart(function_name)
et un
dbgend()
ok pour l'instant c bien sympa; a je possede un tableau dans lequel je vais ajouter, a chaque appel de fonction, un sous tableau avec le nom de fonction (et les eventuels parametres ?), l'instant d'exécution...
donc a chaque appel de fonction sera crée et ajouté celui ci au tableau d'appels ...
ok juske la tout va bien,
pour pouvoir chronometrer les temps d'execution, il faut que je fasse un dbgend histoire de pouvoir marquer la fin d'execution d'une fonction
donc, par exemple toute fonction sera definie ainsi:
function pouet()
{
dbgstart("pouet" );
// code a executer ...
// ....
// puis juste avant de retourner on dbgend() ;)
dbgend()
return la_valeur_cherchee;
}
voial meme si la fonction ne retourne rien on s'en fout on met le dbgend juste la ou son execution s'arrete ...
voila, les problemes qui se posent, sont par exemple si une fonction en appelle une autre; dans ce cas la il faut que l'appel respectif a dbgend() ecrive dans la bonne case sa date de fin d'execution
il faut aussi que si ya des appels successifs a plusieurs fonctions, ca ecrive le temps de fin d'exec dans la bonne case ...
voila en gros c un truc completement trivial que je cherche a faire, mais je suis kéblo car saturé de m'être explosé le crane depuis ca fait un mois donc voila si vous avez une idee d'algorithme tout con qui fasse ca, merci bcp ! (en fait je cherche a realiser les fonction dbgstart et dbgend)
apres, quand je voudrais avoir un recapitulatif, je balayerai tout le tableau d'infos et j'ajouterai les temps etc... c pas le probleme
voila aidez moi ca peut servir a d'autres j'espere
salut!