same answer as:
rimontato: Lei ha chiesto che cosa le vostre opzioni erano. Se il tuo cuore è impostato sulla profilazione, cerca un profiler.
D'altra parte, se si ha effettivamente un problema di prestazioni da trovare, il metodo semplice funziona altrettanto bene o meglio di quasi ogni profiler. Dico quasi tutti, perché in alcuni profiler si può effettivamente scoprire cosa è necessario sapere, che è il costo del tempo attribuibile alle singole istruzioni, in particolare le istruzioni di chiamata.
Il tempo-tempo di un'istruzione è la quantità di tempo che verrebbe salvata se l'istruzione potesse essere rimossa, e una buona stima di essa sarebbe la frazione dei campioni di pila di chiamata che la contengono. Non è necessario stimare tale frazione con alta precisione.Se l'istruzione è su 5 campioni su 10, il costo è probabilmente compreso tra il 45% e il 55%. Non importa: se riuscissi a sbarazzartene, risparmieresti il costo.
Quindi trovare problemi di prestazioni non è difficile. Basta prendere un numero di campioni di stack di chiamata, raccogliere il set di istruzioni su quei campioni e classificare le istruzioni in base alla frazione di campioni che li contengono. Tra le istruzioni ad alta percentuale ci sono alcune che puoi ottimizzare, e non devi indovinare dove sono.
Sto semplificando un po ', perché spesso è utile esaminare più informazioni di stato che solo lo stack di chiamate, per vedere se è effettivamente necessario un lavoro svolto. Ma spero che il punto sia fatto.
Le persone esprimono dubbi sul fatto che potrebbe funzionare in presenza di ricorsione o lavorare su programmi di grandi dimensioni. Un piccolo pensiero (e la sperimentazione) mostra che le obiezioni non trattengono l'acqua.
fonte
2009-02-22 22:08:22
Si noti che quello libero è in realtà molto buono per * memoria * allocazione tracing ma l'analisi perf dritto esso percorsi gli altri sistemi. No, quelli gratuiti che conosco supportano il profiling in modalità mista o il campionamento piuttosto che la strumentazione. AQTime e il sistema del team entrambi lo fanno – ShuggyCoUk
Ho appena provato la demo di dotTrace. Speravo che non sarebbe stato quello che mi aspettavo, ma lo è stato. Ti inonda di cose meravigliosamente presentate che non contano. Ciò che importa è che trascorre ben oltre il 90% del tempo nella chiamata a 'myBitmap.SetPixel', e il resto piccolo in vari punti come intersecare un raggio con una sfera, come facilmente mostrato con non molte pause. Ho girato tutto intorno a DT, ma nulla di quello che è successo mi ha detto cosa mi hanno detto le pause. –
@MikeDunlavey: Non ho davvero abbastanza contesto per capire quel commento, ma dotTrace mi ha sicuramente aiutato a trovare i colli di bottiglia in Noda Time ... –