2010-12-10 36 views
0

Je me demandais s'il y avait un moyen de mesurer un code d'octet donné (fichier de classe, qui a une fonction principale dans le code original) runtime utilisant java bytecode instrumentation de asm.mesurer un programme java runtime en utilisant asm Instrumantation

La mesure doit être aussi précise que possible, et si possible en nanosecondes.

Merci

+0

Puis-je vous demander de quoi avez-vous besoin? – khachik

+0

Oui, je travaille sur un projet qui obtient un bytecode donné et fait des analyses dessus. L'objectif principal est de tracer les accès aux objets dans le temps, et de les représenter sur une carte de chaleur. La raison pour laquelle on demande la nanotime, c'est parce que ça a l'air beaucoup mieux sur la carte de chaleur, la résolution est meilleure, et on peut regarder en quelques "phases" du programme. – RanZilber

Répondre

1

Soyez averti que l'ajout System.nanoTime() ou similaire ajoutera 300 nano-secondes ou plus à la section de code mesurée.

Il est possible dans ASM, mais je soupçonne ne pas vous donner les résultats que vous voulez.

Avez-vous essayé d'effectuer un test de performance de la méthode. c'est-à-dire l'appel pendant 2 secondes pour voir quelle était la durée d'appel moyenne. Cela peut être précis/stable à une nanoseconde si vous l'appelez assez longtemps.

+0

Eh bien, puisque je n'ai aucun lien sur l'entrée. Cela peut être n'importe quel programme, même un programme qui dure une heure. Je veux avoir ce temps en un seul passage. Je veux intrument une ligne au début du code qui va mesurer l'heure à la mendicité, et à la fin. C'est possible? – RanZilber

+0

Cela ressemble au genre de chose qu'un profil fait très bien. Avez-vous essayé de profiler l'application en premier? –

+0

que voulez-vous dire par profilage? – RanZilber