2008-08-06 11 views

Respuesta

285

He usado JetBrains dotTrace y Redgate ANTS ampliamente. Son bastante similares en características y precio. Ambos ofrecen perfiles de rendimiento útiles y perfiles de memoria bastante básicos.

dotTrace se integra con Resharper, lo cual es realmente conveniente, ya que puede perfilar el rendimiento de una prueba unitaria con un clic desde el IDE. Sin embargo, dotTrace a menudo parece dar resultados espurios (por ejemplo, decir que un método tardó varios años en ejecutarse)

Prefiero la forma en que ANTS presenta los resultados del perfilado. Le muestra el código fuente y a la izquierda de cada línea le dice cuánto tiempo tardó en ejecutarse. dotTrace solo tiene una vista en árbol.

EQATEC profiler es bastante básico y requiere compilar versiones instrumentadas especiales de sus ensamblajes que luego se pueden ejecutar en el perfilador EQATEC. Sin embargo, es gratis.

En general, prefiero ANTS para perfiles de rendimiento, aunque si usa Resharper, la integración de dotTrace es una característica clave y significa que supera a ANTS en usabilidad.

El Microsoft CLR Profiler (.Net framework 2.0/.Net Framework 4.0) es todo lo que necesita para el perfilado de memoria .NET.

2011 Actualización:

El Scitech memory profiler tiene un buen interfaz de usuario básico, pero una gran cantidad de información útil, incluyendo información sobre la memoria no administrada, que dotTrace y hormigas carecen - puede que le resulte útil si usted está haciendo la interoperabilidad COM, pero todavía no he encontrado ningún generador de perfiles que haga que los problemas de la memoria COM sean fáciles de diagnosticar; generalmente debe partir windbg.exe.

El perfilador de ANTS ha avanzado a pasos agigantados en los últimos años, y su perfilador de memoria tiene algunas características realmente útiles que ahora lo han adelantado a dotTrace como un paquete en mi opinión. Tengo la suerte de tener licencias para ambos, pero si vas a comprar un perfilador .Net para rendimiento y memoria, hazlo ANTS.

+5

El generador de perfiles en Visual Studio también es realmente fácil de usar, Visual Studio 2010 está en versión Beta y, por lo tanto, también es gratuito. Ha habido varias mejoras en 2010 para ver contención y concurrencia. pruébalo ... – Rick

+15

@Rick Lamentablemente, el analizador de perfiles de Visual Studio no está presente en Professional Edition ... – Drake

+0

Estoy totalmente en desacuerdo sobre que el perfilador CLR sea todo lo que necesita.Perfiles de memoria NET, aunque es posiblemente cierto si no le da ningún valor a su tiempo. Consulte mi respuesta a continuación para obtener un resumen de los mejores generadores de perfiles de memoria, ya que * le ayudarán a encontrar fugas de memoria y problemas potenciales mucho más rápido. –

2

He trabajado con el perfilador de RedGate en el pasado. Hizo el trabajo por mí.

9

He estado trabajando con JetBrains dotTrace para Windows Forms y aplicaciones de consola (no probados en ASP.net aún), y funciona bastante bien:

Recientemente también añaden una "Licencia personal" que es significativamente más barato que el corporativo. Aún así, si alguien más conoce algunos más baratos o incluso gratuitos, me gustaría escuchar también :-)

12

ANTS Profiler. No he usado muchos, pero realmente no tengo ninguna queja sobre HORMIGAS. La visualización es realmente útil.

25

No se olvide nProf - un perfilador freeware muy bueno.

+3

Parece un poco abandonado ... solo un lanzamiento alfa de 2006 :-( –

+2

Funcionó muy bien para mí. Ahora es un proyecto de Google Code. Tuve un lanzamiento en Julio de 2009. – User1

+19

La página nProf ahora indica: NProf ya no se desarrolla activamente. Si está buscando un analizador de .NET de código abierto, eche un vistazo a SlimTune (http://code.google.com/p/slimtune/) –

45

Recientemente descubrí EQATEC Profiler http://www.eqatec.com/tools/profiler. Funciona con la mayoría de las versiones .NET y en un conjunto de plataformas. Es fácil de usar y algunas partes son gratuitas, incluso para uso comercial.

+0

También se produce un error en las llamadas de cola :(Error notificado – leppie

+3

Desafortunadamente, solo los métodos de perfiles. –

+0

Este es solo gratuito para uso no comercial. –

11

AutomatedQA AQTime para temporización y SciTech MemProfiler para la memoria.

+0

MemProfiler ha salvado a nuestro equipo cuando tuvimos una pérdida de memoria. Probé con otras herramientas, pero ninguna otra herramienta me dio el mismo detalle. –

1

Desafortunado la mayoría de los perfiladores que probé fallaron cuando se usaban con las llamadas de cola, más notablemente ANTS. Acabo de escribir el mío. Hay una implementación simple en CodeProject que puede usar como base.

1

Intel® VTune™ Performance Analyzer para el muestreo rápido

+0

@ utility73 - realmente gran desglose de costo de CPU por línea en vtune - que es exactamente lo que estaba buscando hoy. Gracias por sugerir esto – Sichbo

7

no se olvide el scitech impresionante .net memory profiler

Es muy bueno para la localización de por qué su aplicación .NET se está quedando sin memoria.

+1

Muy buena herramienta. Fácil de usar y le permite navegar a través de su gráfico de objetos. Especialmente me gusta el seguimiento de memoria en "tiempo real". Muestra cómo se desarrollan los recuentos de objetos durante el tiempo de ejecución de la aplicación. – lowglider

4

AQTime es razonable, pero tiene un poco de una curva de aprendizaje y no es tan fácil de usar como el construido en uno en suite Equipo

2

no lo he probado a mí mismo, pero tal vez dotTrace? Su aplicación ReSharper es sin duda una buena. Quizás dotTrace también lo es :)

+1

He usado dotTrace y puedo recomendarlo. –

2

Dudo que el generador de perfiles que viene con Visual Studio Team System sea el mejor generador de perfiles, pero he encontrado que es lo suficientemente bueno en muchas ocasiones. ¿Qué necesita específicamente más allá de lo que VS ofrece?

EDITAR: Desafortunadamente, solo está disponible en el Sistema de equipo VS, pero si tiene acceso, merece la pena echarle un vistazo.

+0

¿Quiere decir vs2010? En vs2008 no he visto un perfilador. –

+0

Visual studio tiene un generador de perfiles? – Malfist

+1

Estaba hablando de uno en VS2008, pero puede no estar disponible en todas las versiones (estoy usando VSTS). De los videos de PDC2008 parece que el generador de perfiles mejorará mucho en VS2010. –

14

He encontrado dotTrace Profiler por JetBrains para ser una excelente herramienta de creación de perfiles para .NET y su modo ASP.NET es de calidad.

5

Añadiría que la capacidad de dotTrace para memoria de diferencias y sesiones de seguimiento de rendimiento es absolutamente invaluable (ANTS también puede tener una función de memoria dif, pero no vi una diferencia de rendimiento).

Ser capaz de ejecutar una sesión de creación de perfiles antes y después de una corrección de errores o mejora, luego comparar los resultados es increíblemente valioso, especialmente con una enorme aplicación .NET heredada (como en mi caso) donde el rendimiento nunca fue una prioridad y donde encontrar cuellos de botella puede ser MUY tedioso. Hacer un diff anterior y posterior le permite ver el cambio en el recuento de llamadas para cada método y el cambio en la duración para cada método.

Esto es útil no solo durante los cambios de código, sino también si tiene una aplicación que utiliza una base de datos diferente, por ejemplo, para cada cliente/cliente. Si un cliente se queja de lentitud, puede ejecutar una sesión de creación de perfiles utilizando su base de datos y comparar los resultados con una base de datos "rápida" para determinar qué operaciones están contribuyendo a la lentitud. Por supuesto, hay muchas herramientas de rendimiento en el lado de la base de datos, pero a veces realmente ayuda a ver las métricas de rendimiento desde el lado de la aplicación (ya que está más cerca de lo que el usuario realmente está viendo).

Conclusión: dotTrace funciona muy bien, y la diferencia es muy valiosa.

0

He encontrado muchos problemas en una gran aplicación C# usando this.

Normalmente, el problema se produce durante el inicio o el apagado a medida que se cargan los complementos, y las estructuras de big data se crean, destruyen, serializan o deserializan. A menudo se crean e inicializan más de una vez, y los controladores de cambio se agregan varias veces, agravando el problema.

En casos como este, el programa puede ser tan lento que solo 2 muestras son suficientes para identificar los sitios culpables de método/función/propiedad.

2

¡La última versión del analizador de memoria ANTS (creo que es 5) simplemente se mece! Estaba acechando una fuga usando WinDbg y SOS ya que resultó ser la mejor manera antes, luego probé ANTS y ​​lo obtuve en minutos. Realmente una maravillosa pieza de software.

88

Otros han cubierto perfiles de rendimiento, pero en lo que respecta a la memoria de perfiles de Actualmente estoy evaluando tanto la Scitech .NET memoria Profiler 3.1 y hormigas memoria Profiler 5.1 (versiones actuales de septiembre de 2009). Probé el JetBrains uno hace uno o dos años y no era tan bueno como ANTS (para perfilado de memoria) así que no me molesté esta vez. Al leer los sitios web, parece que no tiene las mismas características de memoria que las otras dos.

Tanto ANTS como el generador de perfiles de memoria Scitech tienen características que el otro no, por lo que lo mejor dependerá de sus preferencias. En términos generales, el Scitech proporciona información más detallada, mientras que el de ANTS es realmente increíble para identificar el objeto con fugas. En general, prefiero el de ANTS porque es muy rápido para identificar posibles fugas.

Estas son las principales ventajas y desventajas de cada uno de mi experiencia:

Características comunes de las hormigas y Scitech .NET memoria Profiler

  • función de análisis en tiempo real
  • Excelente cómo -to videos en sus sitios web
  • Fácil de usar
  • Rendimiento razonablemente (obviamente más lento que sin t que perfilador unido, pero no tanto que se sienten frustrados)
  • Mostrar instancias de objetos con fugas
  • Básicamente tanto hacer el trabajo bastante bien

HORMIGAS

  • de una sola pulsación filtros para encontrar fugas comunes que incluyen: objetos mantenidos vivos solo por manejadores de eventos, objetos que están dispuestos pero que todavía están vivos y objetos que solo se mantienen vivos por una referencia de una disposición objeto. Esta es probablemente la característica más importante de ANTS: encontrar fugas es increíblemente rápido debido a esto. En mi experiencia, la mayoría de las filtraciones se deben a que los manejadores de eventos no están desenganchados y ANTS simplemente te lleva directo a estos objetos. Increíble.
  • Gráfico de retención de objetos. Si bien la misma información está disponible en Scitech, es mucho más fácil de interpretar en ANTS.
  • Muestra el tamaño con los niños además del tamaño del objeto en sí (pero solo cuando se selecciona una instancia desafortunadamente, no en la lista general de clases).
  • mejor integración de Visual Studio (botón derecho del ratón sobre el gráfico para saltar al archivo)

Scitech .NET memoria Profiler

  • Muestra seguimiento de la pila cuando se asignó objeto. Esto es realmente útil para objetos que están asignados en muchos lugares diferentes. Con ANTS es difícil determinar exactamente dónde se creó el objeto filtrado.
  • Muestra el recuento de objetos desechables que no se desecharon. Si bien no es indicativo de una fuga, sí identifica oportunidades para solucionar este problema y mejorar el rendimiento de la aplicación como resultado de una recolección de basura más rápida.
  • Opciones de filtrado más detalladas (se pueden filtrar varias columnas de forma independiente).
  • Presenta información sobre el total de objetos creados (incluidos los recogidos basura). ANTS solo muestra estadísticas de objetos "en vivo". Esto hace que sea más fácil analizar y ajustar el rendimiento general de la aplicación (por ejemplo, identificar dónde se crean muchos objetos innecesariamente que no tienen necesariamente fugas).

A modo de resumen, creo que HORMIGAS le ayuda a encontrar lo que hay un escape rápido, mientras que Scitech ofrece un poco más de detalle acerca de su rendimiento de la memoria de aplicación general y objetos individuales una vez que sepa lo que debe buscar al (por ejemplo. Seguimiento de la pila en la creación) Si el rastro de la pila y el seguimiento de los objetos desechables no expuestos se añadieran a ANTS, no vería la necesidad de utilizar nada más.

+0

La versión 4.0 de .NET Memory Profiler (ahora en vista previa) ahora tiene una vista de gráfico. Esta fue la única característica que me gustó en el generador de perfiles de ANTS que Scitech no tenía (en 3.1/3.5). – cplotts

3

La versión actual de SharpDevelop (3.1.1) tiene un buen perfilador integrado. Es bastante rápido y se integra muy bien en el IDE de SharpDevelop y su corredor NUnit. Los resultados se muestran en un estilo de árbol/lista flexible (use LINQ para crear su propia selección). Al hacer doble clic en el método mostrado, se salta directamente al código fuente.

1

Debo traer una herramienta increíble a su aviso que he usado hace algún tiempo. AVICode Interceptor Studio. En mi empresa anterior, utilizamos esta maravillosa herramienta para crear un perfil de la aplicación weba (Se supone que es la aplicación web más grande del mundo y el mayor proyecto de TI civil jamás realizado). El equipo de rendimiento hizo maravillas con la ayuda de esta magnífica herramienta. Me duele configurarlo, pero es una actividad única y diría que vale la pena el tiempo. Consulte this page para más detalles.

Gracias, James

2

me gustaría añadir yourkit Java y .NET perfilador, ¡Me encanta para Java, no han intentado versión .NET sin embargo.

1

Para mí SpeedTrace es la mejor herramienta en el mercado porque no solo lo ayuda a encontrar cuellos de botella dentro de sus aplicaciones. También lo ayuda a solucionar los escenarios para descubrir por qué su aplicación se bloqueó, su instalación no se instaló, su aplicación se colgó, el rendimiento de la aplicación a veces es pobre dependiendo de la entrada de datos, p. para identificar transacciones db lentas

1

NuMega True Time profiler vive en DevPartner Studio de Micro Focus. Proporciona detalles de nivel de línea y método para aplicaciones .NET que requieren solo PDB, no se necesita ninguna fuente (pero ayuda.) Puede discriminar entre rutinas algorítmicamente pesadas frente a aquellas con esperas de E/S largas utilizando nuestro controlador de tiempo de modo kernel por hilo patentado. La versión 10.5 incluye un nuevo soporte de 64 procesos el 4 de febrero de 2011. Plug desvergonzado: trabajo en la línea de productos DevPartner. Haga clic en http://www.DevPartner.com para conocer las novedades del lanzamiento 10.5.

Descargo de responsabilidad: Soy el Gerente de Producto para DevPartner en Micro Focus.

+0

bienvenido a SO. Tendrá que revelar cualquier relación con DevPartner o será considerado un spammer y tratado como tal. Veo que ha respondido a una serie de preguntas de generación de perfiles ... –

31

[Full Disclosure]

Aunque todavía no es tan completa herramienta como algunos de los otros perfiladores de memoria .NET enumerados aquí, hay una nueva entrada en el mercado llamado JustTrace. Está hecho por Telerik y su objetivo principal es hacer que el seguimiento/creación de perfiles sea más fácil y rápido para todo tipo de aplicaciones (web/Silverlight/desktop).

Si alguna vez ha encontrado el perfilado y la optimización intimidante o lenta con otras herramientas, entonces valdría la pena echar un vistazo a JustTrace.

+12

Cuando voy a descargarlo y probarlo, Telerik quiere que me "registre" y "cree una cuenta". Y todos los botones de suscripción al boletín están marcados por defecto. Me encantaría darle una oportunidad a JustTrace, pero no si Telerik lo hace tan difícil. –

+1

Gracias por intentar, Kyralessa. Sabemos que el proceso puede mejorarse. Estamos trabajando en eso ahora mismo. Esperamos eliminar esos obstáculos pronto. Por ahora, solo desmarque las casillas y en 2 minutos puede tener una cuenta y descargar JustTrace gratis. Perdón por los problemas a corto plazo. -T – Todd

+9

publique de nuevo y avíseme cuando pueda descargar sin crear una cuenta, y lo intentaré. –

1

He estado probando JustTrace de Telerik recientemente y aunque está lejos de un producto terminado, los muchachos van en la dirección correcta.

0

Seleccionamos YourKit Profiler para .NET en mi empresa, ya que era el mejor valor (precio contra función). Para una empresa pequeña que quiere tener licencias flexibles (licencias flotantes), fue una opción perfecta: ANTS era el medallón de los desarrolladores de asiento en ese momento.

Además, nos proporcionó la posibilidad de conectarnos al proceso de ejecución que no fue posible con dotTrace. Sin embargo, tenga en cuenta que adjuntar no es la mejor opción ya que todo .NET se ralentizará, pero esta fue la única forma de perfilar las aplicaciones .NET iniciadas por otros procesos. Característicamente, ANTS y ​​dotTrace fueron mejores, pero al final YourKit fue lo suficientemente bueno.

+0

A partir de enero de 2012, YourKit ha aumentado los precios para el perfilador YourKit. Por lo tanto, la ventaja del precio puede dejar de ser válida. –

1

Si concesión de licencias es un problema que podría intentar WINDBG de perfiles de memoria

0

Si estás en ASP.NET MVC, puede intentar MVCMiniProfiler (http://benjii.me/2011/07/using-the -mvc-mini-profiler-with-entity-framework /)

Cuestiones relacionadas