2009-05-26 20 views
6

Estoy buscando un generador de perfiles para mi aplicación C# que se está desarrollando en Visual Studio 2008. Estoy buscando algo que sea económico (se prefiera la fuente abierta) y que pueda integrarse en VS2008. Encontré el Visual Studio Profiler pero no sé cómo usarlo. Instalé la versión de Stand Alone que depende de Visual Studio (no para ser solo, supongo?) Pero nunca aparece nada en el menú de Herramientas, como su recorrido lo dice.¿Dónde puedo encontrar un generador de perfiles para aplicaciones C# para usar en Visual Studio 2008?

+0

¿Está utilizando VS Express? – GEOCHET

+0

No, tengo la versión Pro – Malfist

Respuesta

11

Aquí hay una lista de código abierto .Net profilers.

He usado y me gusta el Ants-Profiler de Red Gate, pero cuesta dinero (realmente vale la pena, en mi humilde opinión).

+0

+1 para ANts profiler - vale la pena cada centavo que cuesta –

+0

Otro +1 para ANTS profiler ... definitivamente vale la pena el dinero. – jrista

+0

ANTS acordado es muy bueno – miguel

6

El Visual Studio Profiler es solo parte del Team System. No está incluido en Visual Studio Professional.

Hay un .NET Profiler gratuito llamado nprof, pero aún no se ha lanzado y puede ser bastante volátil. Además, hay algunos perfiladores comerciales excelentes tales como ANTS Profiler from Red Gate; sin embargo, estos no son de bajo costo.

+2

Nunca he usado ANTS Profiler, pero no se puede equivocar con nada hecho por Red Gate a menos que esté dentro de un presupuesto. – TheTXI

+0

Si mal no recuerdo, Red Gate tiene una versión de prueba de 14 días. Definitivamente te aconsejaría que lo uses. Se lo aconsejé a otras personas y terminaron comprando una licencia. – bastijn

3

He usado AQtime con gran éxito.

Como ya se mencionó ANTS también es una buena opción.

4

Mi recomendación es dotTrace. No es gratis, el precio es de 170 EUR para la licencia personal.

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

+1

Utilizamos dotTrace en nuestra compañía. Es muy fácil de usar y muy útil. Lo recomiendo :) – Beatles1692

+0

También uso su versión de prueba, hasta que dure :) y me encanta su simplicidad y la forma en que gestiona proyectos multilenguaje. http://stackoverflow.com/questions/906915/c-code-performance/907676#907676 –

+0

Lo usé y funciona muy bien para la creación de perfiles de rendimiento, siempre que su solución no sea demasiado grande. Intenté ejecutar 5000 pruebas unitarias en modo de perfil y mi memoria no era suficiente (y tengo 8 Gigs en mi pc dev). Así que dottracer consume muchos recursos. – crauscher

2

Si lo que desea es hacer perfiles de memoria, la .NET Memory Profiler es excelente. Tiene un período de prueba y un pequeño costo después de eso, vale la pena. Si quiere gastar algo de dinero, DevPartner Studio es muy bueno.

+0

En este momento estoy buscando el tiempo de ejecución por método, pero el perfilado de la memoria puede venir más tarde – Malfist

+1

Puedo responder por .NET Memory Profiler. ¡Quién dice que no puedes tener pérdidas de memoria en .NET! –

+0

no son pérdidas de memoria en el sentido tradicional, pero sí, puedes tenerlas. GC no es perfecto, incluso en Java. – Malfist

5

Echa un vistazo a EQATEC profiler, gratis y funciona bastante bien. También funciona para ASP.NET y .NET CF.

+0

Guau, esto se ve bien. Lo probaré y veré si puede competir con ANTS. +1 de mi parte – tobsen

+0

+1 Esto es bastante decente – magritte

1

Para la optimización del rendimiento, a diferencia de los diagnósticos de memoria, hay un simple way to do it.

Es contradictorio, pero todo lo que tienes que hacer es ejecutar el programa bajo el IDE, y mientras está siendo lento, pausarlo varias veces, examinando la pila de llamadas para ver por qué está haciendo lo que está haciendo. Es muy probable que muestras múltiples lo muestren haciendo algo que podría eliminar. El tiempo ahorrado es aproximadamente igual a la fracción de muestras que contenía el código que arregló.

Es "rápido y sucio", pero a diferencia de la mayoría de los perfiladores, identifica las afirmaciones reales que requieren atención, no solo las funciones que las contienen. También proporciona directamente una estimación aproximada de la aceleración que puede esperar al solucionarlos. No se confunde con la recursión y evita la dificultad del árbol de invocación de que un problema sea pequeño en cualquier rama, pero podría ser grande si se distribuye en muchas ramas.

Tomo varias muestras N, generalmente no más de 20. Si hay un punto de acceso o un método deshonesto, llame a algún lugar en la mitad de la pila, tomando una fracción F del tiempo de ejecución, entonces el número de muestras que lo mostrará NF + - sqrt (NF (1-F). Si N = 20 y F = 0.15, por ejemplo, el número de muestras que mostrarán que es 3 + - 1.6, por lo que tengo una excelente oportunidad de encontrarlo.

menudo F es más como 0,5, por lo que el número de muestras que muestra es 10 + - 2,2, por lo que no se puede perder.

Aviso esto no tiene absolutamente nada que ver con lo rápido que el código es, o la frecuencia con que se ejecuta. Si optimizarlo le ahorrará un determinado porcentaje de tiempo, eso determinará qué porcentaje de muestras lo mostrará por usted.

Por lo general, hay varios lugares para optimizar. Si el problema 1 tiene F1 = 0.5, y el problema 2 tiene F2 = 0.1, entonces si arreglas el problema 1 (doblando la velocidad del programa), entonces F2 generalmente aumenta en ese factor, a 0.2. Así que puede hacerlo nuevamente y estar seguro de encontrar el problema 2. De esta manera, puede eliminar una serie de problemas, hasta que el código sea prácticamente óptimo.

+0

¡Jaja, diviértete, nos vemos en unas pocas décadas! ¿Qué pasa si tienes millones de llamadas? – leppie

+0

@leppie: ¿Perdón? Si te refieres a millones de llamadas por segundo, eso no importa. Lo que importa es el porcentaje de tiempo. Y, por cierto, esto se puede hacer en una fracción del tiempo que lleva instalar y aprender una herramienta. –

+0

¿Fue ese voto negativo porque no creía que iba a funcionar, o simplemente no le gustaba? –

Cuestiones relacionadas