Quello che stai cercando è profiling :
In software engineering, profiling ("program profiling", "software profiling") is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or frequency and duration of function calls. The most common use of profiling information is to aid program optimization.
Ci sono molte di queste applicazioni. A volte, questi sono integrati nell'IDE stesso. L'ide netbeans è uno di questi strumenti che ha un profiler integrato.
Unaltrostrumentodiquestotipoè visual vm .
Iprofilerpossonolavorareinmodidiversieunodeveessereconsapevoledelledifferenze.Unapproccioèognisecondoperfareunosnapshotdeithreadinesecuzioneevederequalimetodivengonoattualmenterichiamatiperognithread.Questoutilizzauncampionamentodiciòcheèlàfuori.
L'altroapproccioè instrument the java bytecode per segnalare l'inizio e interrompi il tempo a un'altra applicazione.
Scrivere un profiler non è molto difficile per un java esperto. IBM ha un articolo sulla scrittura del proprio profiler (con codice sorgente !). Questo è basato sul Java Interactive Profiler .
Ci sono una moltitudine di profiler là fuori - sia liberi che commerciali (che ne dite di un profiler collegato a istanze JVM in esecuzione che possono riferire a voi (e-mail o altre notifiche) quando particolari metodi superano il runtime previsto? fino a un programma che riporta quando le richieste web hanno richiesto troppo tempo - il profilo storico per tale richiesta è stato salvato per un'ispezione successiva?). Devi solo sapere cosa stai cercando per iniziare a trovarli e andare da lì.
Una volta ottenuto il profiler, sei pronto per interpretare i risultati del profilo .