Domanda

Quali profiler hai utilizzato quando lavoravi con i programmi .net e quali consiglieresti in particolare?

È stato utile?

Soluzione

ho usato JetBrains dotTrace E FORMICHE Redgate ampiamente.Sono abbastanza simili per caratteristiche e prezzo.Entrambi offrono un'utile profilazione delle prestazioni e una profilazione della memoria piuttosto elementare.

dotTrace si integra con Resharper, il che è davvero comodo, poiché puoi profilare le prestazioni di un test unitario con un clic dall'IDE.Tuttavia, dotTrace sembra spesso fornire risultati spuri (ad es.dicendo che un metodo richiedeva diversi anni per essere eseguito)

Preferisco il modo in cui ANTS presenta i risultati della profilazione.Ti mostra il codice sorgente e a sinistra di ogni riga ti dice quanto tempo è impiegato per l'esecuzione.dotTrace ha solo una visualizzazione ad albero.

Profilatore EQATEC è piuttosto semplice e richiede la compilazione di versioni strumentate speciali dei tuoi assiemi che possono quindi essere eseguite nel profiler EQATEC.Tuttavia è gratuito.

Nel complesso preferisco ANTS per la profilazione delle prestazioni, anche se se usi Resharper l'integrazione di dotTrace è una funzionalità killer e significa che batte ANTS in termini di usabilità.

Il profiler CLR Microsoft gratuito (.Net quadro 2.0 / .Net Framework 4.0) è tutto ciò che serve per la profilazione della memoria .NET.

Aggiornamento 2011:

IL Profilatore di memoria Scitech ha un'interfaccia utente piuttosto semplice ma molte informazioni utili, incluse alcune informazioni sulla memoria non gestita che mancano a dotTrace e ANTS: potresti trovarlo utile se stai eseguendo l'interoperabilità COM, ma devo ancora trovare alcun profiler che renda facili i problemi di memoria COM diagnosticare: di solito devi evadere windbg.exe.

Il profiler ANTS ha fatto passi da gigante negli ultimi anni e il suo profiler di memoria ha alcune funzionalità davvero utili che ora lo hanno spinto davanti a dotTrace come pacchetto secondo me.Sono abbastanza fortunato da avere licenze per entrambi, ma se hai intenzione di acquistare un profiler .Net sia per prestazioni che per memoria, rendilo ANTS.

Altri suggerimenti

Altri hanno coperto la profilazione delle prestazioni, ma per quanto riguarda la profilazione della memoria Attualmente sto valutando sia Scitech .NET Memory Profiler 3.1 che 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 lo stesso profilazione della memoria caratteristiche come gli altri due.

Sia ANTS che il memory profiler Scitech hanno caratteristiche che l'altro non ha, quindi quale sia il migliore dipenderà dalle tue preferenze.In generale quello Scitech fornisce informazioni più dettagliate mentre quello ANTS è davvero incredibile nell'identificare l'oggetto fuoriuscito.Nel complesso, preferisco quello ANTS perché è molto veloce nell'individuare possibili perdite.

Ecco i principali pro e contro di ciascuno in base alla mia esperienza:

Caratteristiche comuni di ANTS e Scitech .NET Memory Profiler

  • Funzionalità di analisi in tempo reale
  • Eccellenti video dimostrativi sui loro siti web
  • Facile da usare
  • Ragionevolmente performante (ovviamente più lento che senza il profiler collegato, ma non così tanto da farti sentire frustrato)
  • Mostra istanze di oggetti che perdono
  • Fondamentalmente entrambi svolgono il loro lavoro abbastanza bene

FORMICHE

  • Filtri con un clic per trovare perdite comuni Compreso:oggetti mantenuti in vita solo dai gestori eventi, oggetti che vengono eliminati ma ancora attivi e oggetti che vengono mantenuti in vita solo da un riferimento da un oggetto eliminato.Questa è probabilmente la caratteristica killer di ANTS: grazie a questo, trovare le perdite è incredibilmente veloce.Nella mia esperienza, la maggior parte delle fughe di notizie sono causate dal fatto che i gestori di eventi non vengono sganciati e ANTS ti porta direttamente a questi oggetti.Eccezionale.
  • Grafico di conservazione degli oggetti.Sebbene le stesse informazioni siano disponibili in Scitech, sono molto più facili da interpretare in ANTS.
  • Mostra la dimensione con i figli oltre alla dimensione dell'oggetto stesso (ma sfortunatamente solo quando viene selezionata un'istanza, non nell'elenco generale della classe).
  • Migliore integrazione con Visual Studio (fare clic con il pulsante destro del mouse sul grafico per passare al file)

Profilatore di memoria Scitech .NET

  • Mostra l'analisi dello stack quando l'oggetto è stato allocato.Questo è Veramente utile per oggetti allocati in molti posti diversi.Con ANTS è difficile determinare esattamente dove è stato creato l'oggetto trapelato.
  • Mostra il conteggio degli oggetti usa e getta che non sono stati smaltiti.Sebbene non sia indicativo di una perdita, identifica le opportunità per risolvere questo problema e migliorare le prestazioni dell'applicazione come risultato di una raccolta dei rifiuti più rapida.
  • Opzioni di filtro più dettagliate (più colonne possono essere filtrate in modo indipendente).
  • Presenta informazioni sul totale degli oggetti creati (compresi quelli raccolti con i rifiuti).ANTS mostra solo le statistiche degli oggetti "live".Ciò semplifica l'analisi e la messa a punto delle prestazioni complessive dell'applicazione (ad es.identificare dove vengono creati molti oggetti inutilmente che non necessariamente perdono).

In sintesi, penso che ANTS ti aiuti a trovare più velocemente cosa perde mentre Scitech fornisce un po' più di dettagli sulle prestazioni complessive della memoria dell'applicazione e sui singoli oggetti una volta che sai cosa guardare (ad es.traccia dello stack alla creazione).Se lo stack trace e il tracciamento degli oggetti usa e getta non smaltiti venissero aggiunti ad ANTS non vedrei la necessità di utilizzare nient'altro.

Recentemente ho scoperto EQATEC Profiler http://www.eqatec.com/tools/profiler.Funziona con la maggior parte delle versioni .NET e su numerose piattaforme.È facile da usare e alcune parti sono gratuite, anche per uso commerciale.

[Divulgazione completa]

Sebbene non sia ancora così completo come alcuni degli altri profiler di memoria .NET elencati qui, c'è una nuova voce sul mercato chiamata JustTrace.È realizzato da Telerik e il suo obiettivo principale è rendere il tracciamento/profilazione più semplice e veloce 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 meritare un'occhiata.

Non dimenticare nProf - un profiler freeware perfettamente valido.

ho trovato dotTrace Profiler di JetBrains essere un eccellente strumento di profilazione per .NET e la loro modalità ASP.NET è di qualità.

Profilo ANT.Non ne ho usati molti, ma non posso davvero lamentarmi di ANTS.La visualizzazione è davvero utile.

QA automatizzato AQTime per i tempi e SciTech MemProfiler per 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 console (non ancora testate su ASP.net) e funziona abbastanza bene:

Recentemente hanno aggiunto anche 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 io :-)

Non dimenticare la fantastica scienza-tecnologia profilatore di memoria .net

È ottimo per scoprire perché la tua app .net sta esaurendo la memoria.

Vorrei aggiungere la capacità di dotTrace di farlo sessioni di memoria diff e traccia delle prestazioni è assolutamente inestimabile (ANTS potrebbe anche avere una funzione di differenza di memoria, ma non ho visto una differenza di prestazioni).

Essere in grado di eseguire una sessione di profilazione prima e dopo la correzione di un bug o un miglioramento, quindi confrontare i risultati è incredibilmente prezioso, soprattutto con un'enorme applicazione .NET legacy (come nel mio caso) in cui le prestazioni non sono mai state una priorità e dove la ricerca di colli di bottiglia potrebbe essere MOLTO noioso.Fare una differenza prima e dopo ti consente di vedere il file modifica nel conteggio delle chiamate per ciascun metodo e il 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 lamenta lentezza, puoi eseguire una sessione di profilazione utilizzando il suo database e confrontare i risultati con un database "veloce" per determinare quali operazioni contribuiscono alla lentezza.Naturalmente ci sono molti strumenti per le prestazioni lato database, ma a volte aiuta davvero a vedere le metriche delle prestazioni dal lato dell'applicazione (poiché è più vicino a ciò che l'utente sta effettivamente vedendo).

Linea di fondo:dotTrace funziona alla grande e la differenza ha un valore inestimabile.

AQTime è ragionevole, ma ha una certa curva di apprendimento e non è facile da usare come quello integrato in Team Suite

In passato, ho utilizzato il profiler fornito con Sistema di squadra di Visual Studio.

L'attuale versione di SharpDevelop (3.1.1) ha un bel profiler integrato.È abbastanza veloce e si integra molto bene nell'IDE SharpDevelop e nel suo runner NUnit.I risultati vengono visualizzati in uno stile albero/elenco flessibile (usa LINQ per creare la tua selezione).Facendo doppio clic sul metodo visualizzato si passa direttamente al codice sorgente.

Ho lavorato con il profiler di RedGate in passato.Ha fatto il lavoro per me.

Non l'ho provato personalmente, ma forse dotTrace?La loro applicazione ReSharper è sicuramente buona.Forse anche dotTrace lo è :)

Dubito che il profiler fornito con Visual Studio Team System sia il miglior profiler, ma in molte occasioni l'ho trovato abbastanza buono.Di cosa hai bisogno nello specifico oltre a ciò che offre VS?

MODIFICARE:Sfortunatamente è disponibile solo in VS Team System, ma se hai accesso vale la pena provarlo.

L'ultima versione del memory profiler ANTS (penso sia la 5) è semplicemente strepitosa!!!Stavo cercando una perdita usando WinDbg e SOS poiché prima si era rivelato il modo migliore, poi ho provato ANTS e l'ho ottenuto in pochi minuti.Davvero un software meraviglioso.

Vorrei aggiungere il tuokit java e .net profiler, lo adoro per Java, però non ho provato la versione .NET.

Sfortunatamente la maggior parte dei profiler che ho provato hanno fallito se utilizzati con le chiamate in coda, in particolare ANTS.Finisco per scrivere il mio.Esiste una semplice implementazione su CodeProject che puoi utilizzare come base.

Analizzatore di prestazioni Intel® VTune™ per un campionamento rapido

Devo portare alla tua attenzione uno strumento straordinario che ho usato qualche tempo fa. AVICOde Interceptor Studio.Nella mia precedente azienda utilizzavamo questo meraviglioso strumento per profilare l'applicazione web (Questa dovrebbe essere l'applicazione web più grande al mondo e il più grande progetto IT civile mai realizzato).Il team addetto alle prestazioni ha fatto miracoli con l'aiuto di questo magnifico strumento.È una seccatura configurarlo, ma è un'attività che si effettua una sola volta e direi che ne vale la pena.Guardare questa pagina per dettagli.

Grazie, James

Per me SpeedTrace è il miglior strumento sul mercato perché non ti aiuta solo a trovare i colli di bottiglia nelle tue applicazioni.Ti aiuta anche nella risoluzione dei problemi per scoprire perché la tua applicazione si è bloccata, la tua configurazione non è stata installata, la tua applicazione si è bloccata, le prestazioni della tua applicazione a volte sono scarse a seconda dell'input dei dati, ad es.per identificare le transazioni db lente.

Recentemente ho testato JustTrace di Telerik e, sebbene sia ben lontano da un prodotto finito, i ragazzi stanno andando nella giusta direzione.

Se la licenza è un problema, potresti provare WINDBG per la profilazione della memoria

Il profiler NuMega True Time continua a vivere in DevPartner Studio di Micro Focus.Fornisce dettagli a livello di linea e metodo per le app .NET che richiedono solo PDB, nessuna fonte necessaria (ma aiuta). Può discriminare tra routine algoritmicamente pesanti rispetto a quelle con lunghe attese I/O utilizzando il nostro driver di temporizzazione proprietario in modalità kernel per thread.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 a http://www.DevPartner.com per notizie sul lancio della versione 10.5.

Disclaimer:Sono il Product Manager per DevPartner presso Micro Focus.

Ho riscontrato molti problemi in una grande app C# utilizzando Questo.

Di solito il problema si verifica durante l'avvio o l'arresto mentre vengono caricati i plug-in e le strutture di big data vengono create, distrutte, serializzate o deserializzate.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 solo 2 campioni sono sufficienti per individuare i siti di chiamata del metodo/funzione/proprietà colpevoli.

Abbiamo selezionato YourKit Profiler per .NET nella mia azienda perché era il miglior rapporto qualità-prezzo (prezzo vs.caratteristica).Per una piccola azienda che desidera avere licenze flessibili (licenze mobili) è stata una scelta perfetta: all'epoca ANTS era il posto riservato agli sviluppatori.

Inoltre, ci ha fornito la possibilità di collegarci al processo in esecuzione, cosa che non era possibile con dotTrace.Attenzione, però, che allegare non è l'opzione migliore poiché tutto .NET rallenterà, ma questo 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.

Se utilizzi ASP.NET MVC, puoi provare MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top