2009-05-26 10 views
6

Sto cercando un profiler per la mia applicazione C# in fase di sviluppo in Visual Studio 2008. Sto cercando qualcosa che sia poco costoso (open source è preferito) e che può essere integrato in VS2008. Ho trovato il Visual Studio Profiler ma non so come usarlo. Ho installato la versione Stand Alone che dipende da Visual Studio (non da solo, immagino?) Ma non compare mai nulla nel menu Strumenti come dice il loro passaggio.Dove posso trovare un profiler per le applicazioni C# da utilizzare in Visual Studio 2008?

+0

Stai utilizzando VS express? – GEOCHET

+0

No, ho la versione Pro – Malfist

risposta

11

Ecco un elenco di open source .Net profilers.

Ho usato e mi piace il Ants-Profiler da Red Gate, ma costa denaro (ne vale la pena, IMHO).

+0

+1 per profiler ANTS - vale ogni centesimo che costa –

+0

Un altro +1 per profiler ANTS ... vale sicuramente la pena. – jrista

+0

concordato ANTS è molto buono – miguel

6

Il Visual Studio Profiler è solo parte del sistema Team. Non è incluso in Visual Studio Professional.

C'è un profiler .NET gratuito chiamato nprof, ma non è ancora stato rilasciato e può essere piuttosto volatile. Inoltre, ci sono alcuni profiler commerciali eccellenti come ANTS Profiler from Red Gate; tuttavia, questi non sono a basso costo.

+2

Non ho mai usato ANTS Profiler, ma non puoi sbagliare con qualsiasi cosa fatta da Red Gate a meno che tu non abbia un budget. – TheTXI

+0

Se ricordo correttamente, Red Gate ha una versione di prova di 14 giorni. Consiglierei sicuramente di usarlo. L'ho consigliato ad altre persone e hanno finito per acquistare una licenza. – bastijn

3

Ho usato AQtime con grande successo.

Come già accennato ANTS è anche una buona opzione.

4

La mia raccomandazione è dotTrace. Non è gratuito, il prezzo è di 170 euro per la licenza personale.

http://www.jetbrains.com/profiler/index.html

+1

Utilizziamo dotTrace nella nostra azienda. È molto facile da usare e molto utile. Lo consiglio :) – Beatles1692

+0

Anche io uso la sua versione di prova, fino a quando dura :) e adoro la sua semplicità e il modo in cui gestisce i progetti multilingua. http://stackoverflow.com/questions/906915/c-code-performance/907676#907676 –

+0

L'ho usato e funziona molto bene per il profiling delle prestazioni, purché la soluzione non sia troppo grande. Ho provato a eseguire 5000 unit test in modalità profiling e la mia memoria non era abbastanza (e ho 8 Gigs nel mio pc di sviluppo). Quindi dottracer richiede molte risorse. – crauscher

2

Se si vuole solo fare memoria di profiling, il .NET Memory Profiler è eccellente. Ha un periodo di prova e un piccolo costo dopo - ne vale la pena. Se vuoi spendere un po 'di soldi, lo DevPartner Studio è molto buono.

+0

Attualmente sto cercando solo il tempo di esecuzione per metodo, ma il profilo della memoria potrebbe arrivare più tardi – Malfist

+1

Posso garantire per .NET Memory Profiler. Chi dice che non puoi avere perdite di memoria in .NET! –

+0

non sono perdite di memoria nel senso tradizionale, ma sì, puoi averle. GC non è perfetto, anche in Java. – Malfist

5

Verificare il EQATEC profiler, gratuito e funziona piuttosto bene. Funziona anche per ASP.NET e .NET CF.

+0

Wow, questo sembra buono. Lo proverò e vedrò se può competere con ANTS. +1 da me. – tobsen

+0

+1 Questo è abbastanza bello – magritte

1

Per l'ottimizzazione delle prestazioni, al contrario della diagnostica della memoria, c'è un simple way to do it.

È controintuitivo, ma tutto ciò che dovete fare è eseguire il programma sotto l'IDE, e mentre è lento, interromperlo più volte, esaminando lo stack di chiamate per vedere perché sta facendo tutto ciò che sta facendo. Le probabilità sono eccellenti che più campioni mostreranno che sta facendo qualcosa che potresti eliminare. Il tempo risparmiato è all'incirca uguale alla frazione di campioni che conteneva il codice che hai corretto.

È "veloce e sporco", ma a differenza della maggior parte dei profiler, individua le dichiarazioni effettive che richiedono attenzione, non solo le funzioni che le contengono. Fornisce anche una stima approssimativa della velocità che ci si può aspettare fissandoli. Non è confuso dalla ricorsione, ed evita la difficoltà della call-tree che un problema potrebbe essere piccolo in qualsiasi ramo, ma potrebbe essere grande se viene distribuito su molti settori.

Prendo diversi campioni N, di solito non più di 20. Se c'è un hotspot o un metodo canaglia chiama da qualche parte mid-stack, prendendo una frazione F del tempo di esecuzione, quindi il numero di campioni che mostrerà che è NF + - sqrt (NF (1-F). Se N = 20 e F = 0.15, ad esempio, il numero di campioni che mostrerà è 3 + - 1.6, quindi ho un'eccellente possibilità di trovarlo.

Spesso F è più simile a 0,5, quindi il numero di campioni che lo mostrano è 10 + - 2,2, quindi non sarà perso.

Si noti che questo non ha assolutamente nulla a che fare con quanto è veloce il codice o con quale frequenza viene eseguito. Se l'ottimizzazione lo farà risparmiare una certa percentuale di tempo, che determina quale percentuale di campioni lo visualizzerà per voi.

Di solito ci sono più posti da ottimizzare. Se il problema 1 ha F1 = 0.5, e il problema 2 ha F2 = 0.1, allora se risolvi il problema 1 (raddoppiando la velocità del programma), allora F2 di solito aumenta di quel fattore, a 0,2. Così puoi farlo di nuovo ed essere sicuro di trovare il problema 2. In questo modo, puoi abbattere una serie di problemi, fino a quando il codice è praticamente ottimale.

+0

Haha, divertiti, ci vediamo tra qualche decennio! Cosa succede se hai milioni di chiamate? – leppie

+0

@leppie: Pardon? Se intendi milioni di chiamate al secondo, non importa. Ciò che conta è la percentuale di tempo. E a proposito, questo può essere fatto in una frazione del tempo necessario per installare e imparare uno strumento. –

+0

È stato questo downvote a causa del fatto di non pensare che funzionerà o semplicemente di non "piacergli"? –

Problemi correlati