Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2741 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Mesure du temps CPU d'une partie d'un programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mesure du temps CPU d'une partie d'un programme

n°266066
leonhard
Posté le 09-12-2002 à 22:21:10  profilanswer
 

Bonsoir
 
J'ai un programme comprennant une phase d'initialisation et d'une phase de résolution. J'aimerais mesurer le temps CPU mis par la phase de résolution si possible en pur Java. Y a-t-il une âme généreuse qui pourrait m'indiquer le nom d'une classe (et éventuellement de la méthode qui va avec ) permettant de mesurer ce temps CPU. Si j'ai compris, la classe Time mesure le temps écoulé au complet et pas le temps CPU d'un programme.. Au cas ou, je suis aussi intéressé à une solution spécifique Linux.
 
merci de votre aide et bonne soirée
 
leonhard

mood
Publicité
Posté le 09-12-2002 à 22:21:10  profilanswer
 

n°266073
gfive
Posté le 09-12-2002 à 22:25:21  profilanswer
 

Bah, sous Linux, tu as l'utilitaire time, qui fait ça :  
 
time tacommade option1....
 
Le résultat sera de la forme :  
real    0m29.641s
user    0m0.200s
sys     0m0.080s
 
Pour plus d'info, man time (je l'ai jamais lu! :D)

n°266090
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 22:41:22  profilanswer
 

gfive a écrit :

Bah, sous Linux, tu as l'utilitaire time, qui fait ça :  
 
time tacommade option1....
 
Le résultat sera de la forme :  
real    0m29.641s
user    0m0.200s
sys     0m0.080s
 
Pour plus d'info, man time (je l'ai jamais lu! :D)

euh le temps utilisateur et le temps système c'est pas ce qui est demandé


---------------
du bon usage de rand [C] / [C++]
n°266198
leonhard
Posté le 10-12-2002 à 07:19:27  profilanswer
 


 
ben time c'est ce que j'avais utilisé au début, mais même si c'est pas exactement ce que je voulais, le plus gros problème, je ne sais pas distinguer dans ce temps, le temps mis par la phase d'initialisation du temps mis pour la résolution  
 
j'ai pensé aussi à un "profiler", mais dans ce domaine je n'y connais rien. Est-ce que vous auriez une référence, un pointeur ou mieux un nom de produit à proposer ?

n°266395
gfive
Posté le 10-12-2002 à 14:36:17  profilanswer
 

Taz@PPC a écrit :

euh le temps utilisateur et le temps système c'est pas ce qui est demandé


 
ouais, mais en lisant le man de cette commande, il doit y avoir moyen de récupérer des infos pertinentes...

n°266422
bjone
Insert booze to continue
Posté le 10-12-2002 à 14:58:45  profilanswer
 

bin le temps d'éxécution c'est: temps au moment de l'arrêt - temps au moment du début.
 
donc si tu as moyen d'obtenir un temps en java, à partir ou sa précision te va (seconde ? miliseconde ?), tu peut te démerder avec ça....

n°266567
BifaceMcLe​OD
The HighGlandeur
Posté le 10-12-2002 à 17:30:55  profilanswer
 

System.getTimeMillisec(), mais les mesures de temps écoulé effectuées à partir de ce que cette fonction renvoie varient pas mal si elles sont assez courtes. Et il faut l'utiliser sur une machine qui ne fait qu'exécuter ton programme Java, parce qu'elle ne fait pas la différence entre temps passé dans l'appli Jav et temps passé dans les autres applis qui tournent sur la machine (OS compris).

n°266873
leonhard
Posté le 11-12-2002 à 07:57:30  profilanswer
 

BifaceMcLeOD a écrit :

System.getTimeMillisec(), mais les mesures de temps écoulé effectuées à partir de ce que cette fonction renvoie varient pas mal si elles sont assez courtes. Et il faut l'utiliser sur une machine qui ne fait qu'exécuter ton programme Java, parce qu'elle ne fait pas la différence entre temps passé dans l'appli Jav et temps passé dans les autres applis qui tournent sur la machine (OS compris).


 
exact !
 
Je crois que j'ai mal expliqué mon prob. Je dois résoudre un gros système linéaire (6000 à 40'000 inconnues). Les données du système proviennent soit du réseau, soit d'un fichier sur disque (local), soit de calculs effectués localement. L'obtention de ces données se fait dans un temps que je ne peux pas négliger, c'est ce que j'appellé la phase d'initialisation. Ensuite, je vais résoudre le système linéaire avec plusieurs algorithmes que je voudrais comparer. C'est pour cela que je dois mesurer le temps cpu. La commande time de Linux donne le temps pour l'initialisation et la résolution, ce qui n'est pas adapté dans mon cas. Lire le temps système n'est pas bon non plus sur une machine multitâche, car on ne sait jamais combien de temps le programme à vraiment nécessité...  
 
merci tout de même de votre aide et bonne journée
 

n°266895
BifaceMcLe​OD
The HighGlandeur
Posté le 11-12-2002 à 09:36:40  profilanswer
 

Ben je ne vois que le profileur dans ce cas.
 
Dans le principe, ce n'est pas compliqué : tu lances ton programme sous le contrôle du profileur, comme si c'était un débogueur, sauf que tu ne l'interromps jamais. Et lorsque le programme se termine, le profileur te donne le temps passé et le nombre d'exécutions de chcune des lignes de ton programme (plus des informations détaillées sur qui a appelé qui, etc).
 
Il y a un profileur fourni en standard avec le JDK, mais ses résultats sont assez mal aisés à lire, car ils sont présentés sous la forme d'un banal fichier texte. Il y a aussi des logiciels beaucoup plus intuitifs, mais qui sont évidemment des logiciels commerciaux, donc payants (exemple : j'aime bien OptimizeIt, aujourd'hui distribué par Borland).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Mesure du temps CPU d'une partie d'un programme

 

Sujets relatifs
Execution d'un programme Cle temps
connaitre l'etat de sorti d'un programmeProgramme facile style Borland Turbo C++ Lite
[UNITE DE MESURE] megabyte ou mebibyte ?[urgent][C, Algo] programme pour demain
Ecrire un programme C utilisant des fonctions faites en assembleurs...[VB] il y a 3 lignes dans un programme que je ne comprends pas, help
[c] Mesurer les temps d'exécution d'une fonction[Delphi]Lancer un exe et detecter si le programme tourne encore ou non
Plus de sujets relatifs à : Mesure du temps CPU d'une partie d'un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR