Risposte:
Ho usato ampiamente JetBrains dotTrace e Redgate ANTS . Sono abbastanza simili per caratteristiche e prezzo. Entrambi offrono utili profili di prestazioni e profili di memoria piuttosto basilari.
dotTrace si integra con Resharper, il che è davvero conveniente, in quanto è possibile profilare le prestazioni di un test unitario con un clic dall'IDE. Tuttavia, dotTrace sembra spesso dare risultati spuri (ad esempio dicendo che un metodo ha richiesto diversi anni per essere eseguito)
Preferisco il modo in cui ANTS presenta i risultati della profilazione. Ti mostra il codice sorgente e alla sinistra di ogni riga ti dice quanto tempo ci vuole per essere eseguito. dotTrace ha solo una vista ad albero.
Il profiler EQATEC è abbastanza semplice e richiede di compilare versioni strumentate speciali dei vostri assiemi che possono essere eseguite nel profiler EQATEC. È, tuttavia, gratuito.
Nel complesso preferisco ANTS per la profilazione delle prestazioni, sebbene se si utilizza Resharper, l'integrazione di dotTrace è una funzione killer e significa che batte ANTS in termini di usabilità.
Il profiler gratuito di Microsoft CLR ( .Net framework 2.0 / .Net Framework 4.0 ) è tutto ciò che serve per la creazione di profili di memoria .NET.
Aggiornamento 2011:
Il profiler di memoria Scitech ha un'interfaccia utente piuttosto semplice ma molte informazioni utili, tra cui alcune informazioni sulla memoria non gestita di cui dotTrace e ANTS mancano - potresti trovarlo utile se stai eseguendo l'interoperabilità COM, ma devo ancora trovare un profiler che renda COM problemi di memoria facili da diagnosticare: di solito è necessario esplodere windbg.exe
.
Il profiler ANTS ha fatto passi da gigante negli ultimi anni, e il suo profiler di memoria ha alcune funzioni veramente utili che ora lo hanno spinto davanti a dotTrace come pacchetto nella mia stima. Ho la fortuna di avere licenze per entrambi, ma se hai intenzione di acquistare un profiler .Net sia per prestazioni che per memoria, rendilo ANTS.
Altri hanno coperto il profilo delle prestazioni, ma per quanto riguarda il profilo della memoria sto attualmente valutando sia Scitech .NET Memory Profiler 3.1 sia ANTS Memory Profiler 5.1 (versioni attuali a settembre 2009). Ho provato JetBrains uno o due anni fa e non era buono come ANTS (per la profilazione della memoria), quindi questa volta non mi sono preoccupato. Dalla lettura dei siti Web sembra che non abbia le stesse funzionalità di profilazione della memoria delle altre due.
Sia ANTS che il profiler di memoria Scitech hanno caratteristiche che l'altro non ha, quindi il migliore dipenderà dalle tue preferenze. In generale, quello Scitech fornisce informazioni più dettagliate mentre quello ANTS è davvero incredibile nell'identificare l'oggetto che perde. Nel complesso, preferisco quello ANTS perché è così veloce nell'identificare possibili perdite.
Ecco i principali pro e contro di ciascuno dalla mia esperienza:
Funzionalità comuni di ANTS e Scitech .NET Memory Profiler
ANTS
Scitech .NET Memory Profiler
A titolo di riepilogo, penso che ANTS ti aiuti a trovare ciò che perde più velocemente mentre Scitech fornisce un po 'più di dettaglio sulle prestazioni complessive della memoria dell'applicazione e sui singoli oggetti una volta che sai cosa guardare (ad es. Stack stack al momento della creazione). Se la traccia dello stack e il tracciamento di oggetti usa e getta non sovrapposti fossero aggiunti ad ANTS non vedrei la necessità di usare nient'altro.
Di recente ho scoperto EQATEC Profiler http://www.eqatec.com/tools/profiler . Funziona con la maggior parte delle versioni .NET e su un sacco di piattaforme. È facile da usare e parti di esso sono gratuite, anche per uso commerciale.
Sebbene non sia ancora completo come alcuni degli altri profili di memoria .NET elencati qui, c'è una nuova voce sul mercato chiamata JustTrace . È realizzato da Telerik e il suo obiettivo principale è rendere la traccia / profilazione più semplice e veloce da eseguire per tutti i tipi di app (web / Silverlight / desktop).
Se hai mai trovato la profilazione e l'ottimizzazione intimidatorie o lente con altri strumenti, allora JustTrace potrebbe valere la pena dare un'occhiata.
Non dimenticare nProf - un profiler perfettamente perfetto, freeware.
Ho trovato dotTrace Profiler di JetBrains un eccellente strumento di profilazione per .NET e la loro modalità ASP.NET è di qualità.
Profiler ANTS . Non ne ho usati molti, ma in realtà non ho lamentele su ANTS. La visualizzazione è davvero utile.
AutomatedQA AQTime per timing e SciTech MemProfiler per la memoria.
Se stai cercando qualcosa di veloce, facile e gratuito, http://code.google.com/p/slimtune/ sembra fare bene il lavoro.
Ho lavorato con JetBrains dotTrace per WinForms e app per console (non ancora testato su ASP.net) e funziona abbastanza bene:
Recentemente hanno anche aggiunto una "Licenza personale" che è significativamente più economica di quella aziendale. Tuttavia, se qualcun altro ne conosce alcuni più economici o addirittura gratuiti, mi piacerebbe sentire anche :-)
Non dimenticare il fantastico profiler di memoria scnet .net
È ottimo per rintracciare perché l'app .net sta esaurendo la memoria.
Vorrei aggiungere che la capacità di dotTrace di diff memoria e sessioni di performance performance è assolutamente inestimabile (ANTS potrebbe anche avere una funzione di diff di memoria, ma non ho visto una differenza di performance).
Essere in grado di eseguire una sessione di profilazione prima e dopo una correzione o un miglioramento dei bug, quindi confrontare i risultati è incredibilmente prezioso, soprattutto con un'applicazione .NET legacy mastodontica (come nel mio caso) in cui le prestazioni non sono mai state una priorità e dove potrebbero essere i colli di bottiglia MOLTO noioso. Fare un diff prima e dopo ti permette di vedere il cambiamento nel conteggio delle chiamate per ciascun metodo e la modifica della durata per ciascun metodo .
Ciò è utile non solo durante le modifiche al codice, ma anche se si dispone di un'applicazione che utilizza un database diverso, ad esempio, per ciascun cliente / cliente. Se un cliente si lamenta della lentezza, è possibile eseguire una sessione di profilazione utilizzando il proprio database e confrontare i risultati con un database "veloce" per determinare quali operazioni contribuiscono alla lentezza. Naturalmente ci sono molti strumenti per le prestazioni sul lato database, ma a volte mi aiuta davvero a vedere le metriche delle prestazioni dal lato dell'applicazione (dal momento che è più vicino a ciò che l'utente vede effettivamente).
In conclusione: dotTrace funziona alla grande e il diff è inestimabile.
AQTime è ragionevole, ma ha un po 'di una curva di apprendimento e non è facile da usare come quello integrato in Team Suite
In passato, ho usato il profiler fornito con Visual Studio Team System .
L'attuale versione di SharpDevelop (3.1.1) ha un buon profiler integrato. È abbastanza veloce e si integra molto bene nell'IDE SharpDevelop e nel suo corridore NUnit. I risultati vengono visualizzati in uno stile ad albero / elenco flessibile (utilizzare LINQ per creare la propria selezione). Fare doppio clic sul metodo visualizzato passa direttamente al codice sorgente.
Non l'ho provato da solo, ma forse dotTrace ? La loro applicazione ReSharper è sicuramente buona. Forse dotTrace è troppo :)
Dubito che il profiler fornito con Visual Studio Team System sia il miglior profiler, ma l'ho trovato abbastanza buono in molte occasioni. Di cosa hai bisogno in particolare oltre a ciò che offre VS?
EDIT: Sfortunatamente è disponibile solo in VS Team System, ma se hai accesso a ciò vale la pena dare un'occhiata.
Analizzatore di prestazioni Intel® VTune ™ per un rapido campionamento
Devo portare uno strumento fantastico alla tua notifica che ho usato qualche tempo fa. AVICode Interceptor Studio . Nella mia precedente azienda abbiamo usato questo meraviglioso strumento per profilare l'applicazione Web ( si suppone che sia la più grande applicazione Web al mondo e il più grande progetto IT civile mai realizzato ). Il team delle prestazioni ha fatto miracoli con l'aiuto di questo magnifico strumento. Configurarlo è una seccatura, ma si tratta di un'attività una tantum e direi che ne vale la pena. Dai un'occhiata a questa pagina per i dettagli.
Grazie James
Per me SpeedTrace è lo strumento migliore sul mercato perché non solo ti aiuta a trovare i colli di bottiglia all'interno delle tue applicazioni. Ti aiuta anche nella risoluzione dei problemi per scoprire perché l'applicazione si è arrestata in modo anomalo, l'installazione non è stata installata, l'applicazione è stata bloccata, le prestazioni dell'applicazione a volte sono scarse a seconda dell'input dei dati, ad esempio per identificare transazioni db lente.
Di recente ho testato il JustTrace di Telerik e sebbene sia ben lontano da un prodotto finito, i ragazzi stanno andando nella giusta direzione.
Se la licenza è un problema, puoi provare WINDBG per la creazione di profili di memoria
Il profiler NuMega True Time vive in DevPartner Studio di Micro Focus. Fornisce dettagli a livello di linea e metodo per le app .NET che richiedono solo PDB, non è necessaria alcuna fonte (ma aiuta.) Può discriminare tra routine algoritmicamente pesanti rispetto a quelle con lunghe attese di I / O utilizzando il nostro driver di temporizzazione in modalità kernel per thread proprietario. La versione 10.5 viene fornita con il nuovo supporto per 64 processi il 4 febbraio 2011. Spina spudorata: lavoro sulla linea di prodotti DevPartner. Seguire su http://www.DevPartner.com per le notizie sul lancio del 10.5.
Disclaimer: sono il Product Manager di DevPartner presso Micro Focus.
Ho riscontrato molti problemi in una grande app C # usando questo .
Di solito il problema si verifica durante l'avvio o l'arresto durante il caricamento dei plug-in e la creazione, distruzione, serializzazione o deserializzazione di strutture di big data. Spesso vengono creati e inizializzati più di una volta e i gestori delle modifiche vengono aggiunti più volte, aggravando ulteriormente il problema.
In casi come questo, il programma può essere così lento che sono sufficienti solo 2 campioni per individuare i siti di chiamata di metodo / funzione / proprietà colpevoli.
Abbiamo selezionato YourKit Profiler per .NET nella mia azienda perché era il miglior rapporto qualità / prezzo. Per una piccola azienda che vuole avere una licenza flessibile (licenze fluttuanti) è stata una scelta perfetta: all'epoca ANTS era il medaglione dei posti degli sviluppatori.
Inoltre, ci ha fornito la possibilità di collegarci al processo in esecuzione, cosa impossibile con dotTrace. Fai attenzione, tuttavia, che il collegamento non sia l'opzione migliore poiché tutto ciò rallenterà .NET, ma era l'unico modo per profilare le applicazioni .NET avviate da altri processi. Per quanto riguarda le funzionalità, ANTS e dotTrace erano migliori, ma alla fine YourKit era abbastanza buono.