Come vedere quali parti del codice vengono eseguite più spesso?


11

Vorrei essere in grado di vedere quale codice in migliaia di righe di codice sorgente viene eseguito più spesso e impiega più tempo. Lo scopo di questo sarebbe per l'ottimizzazione.

Essere in grado di vedere quali parti del codice vengono eseguite più spesso è importante per l'ottimizzazione, perché quelle parti sono dove dovrei concentrarmi per accelerare. Allo stesso tempo, naturalmente, un po 'di codice viene eseguito molto spesso ma non richiede praticamente tempo, quindi è anche importante essere in grado di vedere quale codice impiega più tempo.

Immagino che il meglio di entrambi i mondi sarebbe un programma che somma la quantità di tempo impiegata da un pezzo di codice, incluso TUTTE le volte in cui è stato eseguito (per capire cosa rallenta il tuo codice nel complesso). Esiste una specie di strumenti per questo?


Preferisci il sistema operativo o il linguaggio di programmazione?
Mawg dice di ripristinare Monica il

Risposte:


15

Quello che stai cercando è la profilazione :

Nell'ingegneria del software, la profilazione ("profiling del programma", "profiling del software") è una forma di analisi dinamica del programma che misura, ad esempio, lo spazio (memoria) o la complessità temporale di un programma, l'uso di istruzioni particolari o la frequenza e durata delle chiamate di funzione. L'uso più comune delle informazioni di profilazione è di supporto all'ottimizzazione del programma.

Esistono diverse applicazioni di questo tipo. A volte, questi sono integrati nell'IDE stesso. L'ide netbeans è uno di questi strumenti con un profiler incorporato. inserisci qui la descrizione dell'immagine

Un altro strumento del genere è Visual VM .

inserisci qui la descrizione dell'immagine

I profilatori possono lavorare in diversi modi - e si dovrebbe essere consapevoli delle differenze. Un approccio è ogni secondo per creare un'istantanea dei thread in esecuzione e vedere quali metodi vengono attualmente invocati per ciascun thread. Questo utilizza un campionamento di ciò che è là fuori.

L'altro approccio è quello di strumentare il bytecode java per riportare indietro il tempo di inizio e fine ad un'altra applicazione.

Scrivere un profiler non è tremendamente difficile per un esperto java. IBM ha un articolo su come scrivere il tuo profilo (con codice sorgente!). Questo è basato su Java Interactive Profiler .

Esistono una moltitudine di profiler là fuori - sia gratuiti che commerciali (che ne dici di un profiler collegato all'esecuzione di istanze JVM che può riportarti (e-mail o qualche altra notifica) quando determinati metodi superano il runtime previsto? O collegati a un programma che riporta quando le richieste Web hanno impiegato troppo tempo - il profilo storico per quella richiesta è stato salvato per un controllo successivo?). Devi solo sapere cosa stai cercando per iniziare a trovarli e andare da lì.

Una volta ottenuto il profiler, puoi interpretare i risultati della profilazione .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.