OVH Cloud OVH Cloud

mesure consommation CPU

2 réponses
Avatar
Sebastien Devaux
Bonjour le groupe,

Quel est le meilleur moyen depuis un programme Java d'avoir une idée de
la consommation CPU utilisée pour éxecuter un bout de code : une mesure
du temps écoulé ne me suffit pas car j'ai besoin d'un indice qui prend
en compte la puissance disponible. Y a-t-il moyen d'avoir par exemple le
nombre de bytecode executé suite à l'invocation d'une méthode
quelconque ?

L'emploi d'outil de profiling externe ne répond pas à mon besoin, je
fais des sortes d'applets qui n'ont aucune connaissance à priori sur la
plateforme qui les fait tourner (en particulier la puissance
potentielle, la puissance disponible), mais j'ai besoin d'un indice de
performance constaté à l'éxécution.

Cordialement,
--
Sébastien Devaux <sebastien.devaux@laposte.net>
\\//, http://www.freesoftware.fsf.org/gsp/
http://www.freesoftware.fsf.org/naja/

2 réponses

Avatar
Nicolas Delsaux
Le 18.11 2003, Sebastien Devaux s'est levé et s'est dit : "tiens, si
j'écrivais aux mecs de fr.comp.lang.java ?"

Bonjour le groupe,

Quel est le meilleur moyen depuis un programme Java d'avoir une idée de
la consommation CPU utilisée pour éxecuter un bout de code : une mesure
du temps écoulé ne me suffit pas car j'ai besoin d'un indice qui prend
en compte la puissance disponible. Y a-t-il moyen d'avoir par exemple le
nombre de bytecode executé suite à l'invocation d'une méthode
quelconque ?


Tu peux ouvrir le fichier .class avec un quelconque éditeur de bytecode
(comme par exemple BCEL ou autres), qui va te permettre depuis ton code
Java de manipuler le bytecode de tes fichiers .class, mais aussi de
connaître le nombre d'instructions de chaque méthode. Mais ça n'est pas
pertinent.
Tu parlais de temps d'exécution. Pour moi, au-delà de la consomation CPU,
c'est la *seule* mesure qui soit facile à obtenir sur toute plateforme,
mais surtout significative pour l'utilisateur.
Si tu veux tester les performances de tes applis sur différentes
plateformes, il te suffit donc de leur faire te retourner (par socket, ou
n'importe quel autre moyen) le temps d'exécution sur telle ou telle
plateforme.

--
Nicolas Delsaux
Tu as des poils qui te poussent partout sur le corps ?
Ta bibliothèque est plus grande à l'intérieur qu'à l'extérieur ?
Et pire que tout, tu commences toutes tes phrases par Oo en les terminant
par kkkk ?
Pas de doute, tu te transformes en bibliothécaire de l'université
invisible.

Avatar
Sebastien Devaux
Nicolas Delsaux wrote:
Tu peux ouvrir le fichier .class avec un quelconque éditeur de bytecode
(comme par exemple BCEL ou autres), qui va te permettre depuis ton code
Java de manipuler le bytecode de tes fichiers .class, mais aussi de
connaître le nombre d'instructions de chaque méthode. Mais ça n'est pas
pertinent.
C'est bien ce que je craignais. Je pensais qu'on pouvait avoir quelque

chose qui ressemble à ce qui est affiché par l'émulateur j2me quand le
programme se termine, parmi les infos affiché, il y a le nombre de
bytecode affiché. J'en déduis que pour faire cela il faut lancer la JVM
en C avec un mode debug particulier pour après récuperer les infos.
J'avais espoir de pouvoir le faire directement dans un prog java.
Tu parlais de temps d'exécution. Pour moi, au-delà de la consomation CPU,
c'est la *seule* mesure qui soit facile à obtenir sur toute plateforme,
mais surtout significative pour l'utilisateur.
Oui le temps est la bonne mesure si la quantité de travaille accomplie

est connue.
Si tu veux tester les performances de tes applis sur différentes
plateformes, il te suffit donc de leur faire te retourner (par socket, ou
n'importe quel autre moyen) le temps d'exécution sur telle ou telle
plateforme.
En fait je déploie une espèce de conteneur qui lance des applets sans

vraiment savoir exactement ce qu'elles font. Je voudrais quand une
applet se termine avoir une idée de la puissance dont a pu bénéficier
l'applet (on part du principe que l'applet n'est pas interactive et
qu'elle n'est pas en sommeil en attente de je ne sais quoi...). Le ratio
nb_bytecode_executé/temps_execution aurait été un très bon estimateur
qui a surtout l'avantage d'avoir un sens équivalent qur toutes les
plateforme.

Je vais sans doute me rabattre sur un thread idle avec un compteur dans
mon conteneur pour essayer de jouer aux devinettes...
--
Sébastien Devaux
//, http://www.freesoftware.fsf.org/gsp/
http://www.freesoftware.fsf.org/naja/