2010-04-13 18 views
8

Ci sono dei buoni, strumenti gratuiti per l'utilizzo della memoria profilo in C#?Come utilizzo il profilo di memoria nel mio progetto

Dettagli:
Ho un progetto di visualizzazione che utilizza raccolte piuttosto grandi. Vorrei verificare quali parti di questo progetto - dal lato dell'elaborazione dei dati, o dal lato di visualizzazione - usano la maggior parte della memoria, quindi potrei ottimizzarla.
So che quando si tratta di calcolare la dimensione della raccolta il caso è piuttosto semplice e posso farlo da solo. Ma ci sono anche alcuni elementi per i quali non riesco a stimare l'utilizzo della memoria così facilmente.
L'utilizzo della memoria è abbastanza grande, ad esempio l'elaborazione di un file di dimensioni 35 MB il mio programma utilizza un po 'più di 250 MB di RAM.

+0

Come stai misurando che l'utilizzo della memoria in questo momento a proposito? –

+0

Basta controllare l'utilizzo della memoria nel task manager. I miei colleghi mi hanno informato che per dataset di grandi dimensioni utilizza anche 1,5 GB di memoria e talvolta causa un'eccezione "memoria esaurita", quindi ho bisogno di trovare un modo per ottimizzarlo. – Gacek

risposta

3

Ho avuto successo usando lo standard ANTS profiler di RedGate. Vale anche la pena di leggere Brad Abrams blog dove ha talked about profiling memory

+0

+1 è un buon piccolo strumento. Tuttavia non è economico :) –

+0

@Ed vale ogni centesimo nella mia esperienza, però; e c'è una versione di valutazione che potrebbe essere utilizzata per un progetto a breve termine –

+0

Non ** gratis ** (come chiede) anche se –

0

JetBrains DotTrace è anche buono. Ho usato entrambi i prodotti RedGate e JetBrains e entrambi fanno un ottimo lavoro nell'individuare i colli di bottiglia e le perdite.

0

Alcune SKU di Visual Studio includono un profiler. È gratuito se si dispone già di uno di questi SKU.

A partire da Visual Studio 2005, si è sicuri che il profiler sia incluso nello Team Developer e Team Suite. Non sono sicuro se è incluso in altre SKU

+0

Non lo è. Ed è un profiler di codice. –

2

Sono stupito che nessuno abbia menzionato il gratuito CLR Profiler di Microsoft!

Non conoscevo questo strumento fino a poco tempo fa. Ho avuto un bug che ha fatto sì che il mio programma continuasse ad allocare sempre più memoria. Il CLR Profiler può individuare gli "hot spot" di allocazione della memoria nel programma.

Ho identificato la riga di codice responsabile della perdita, entro 15-20 minuti dall'installazione del profiler.

Fondamentalmente, lo strumento del codice e lo esegue con un po 'di profilazione (che rallenta notevolmente il codice, 10x-100x sono le figure ufficiali che penso).

Si esegue un determinato carico di lavoro per un certo periodo di tempo e si può quindi vedere quali posizioni del codice hanno assegnato la quantità di memoria (e quanto è stato liberato rispetto a quanto è stato trattenuto, ecc.).

controllo fuori a: https://clrprofiler.codeplex.com/

Inoltre, ecco un tutorial su come utilizzare lo strumento: http://geekswithblogs.net/robp/archive/2009/03/13/speedy-c-part-4-using---and-understanding---clr.aspx

Problemi correlati