¿Cuáles son algunos buenos perfiladores .NET?

Resuelto ricree asked hace 16 años • 30 respuestas

¿Qué perfiladores ha utilizado al trabajar con programas .net y cuáles recomendaría especialmente?

ricree avatar Aug 07 '08 03:08 ricree
Aceptado

He utilizado ampliamente JetBrains dotTrace y Redgate ANTS . 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 falsos (por ejemplo, decir que un método tardó varios años en ejecutarse).

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

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

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

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

Actualización de 2011:

El generador de perfiles de memoria de Scitech tiene una interfaz de usuario bastante básica pero mucha información útil, incluida información sobre la memoria no administrada de la que carecen dotTrace y ANTS. Puede que le resulte útil si está realizando interoperabilidad COM, pero todavía tengo que encontrar algún generador de perfiles que cree COM. Los problemas de memoria son fáciles de diagnosticar; por lo general, tienes que salir windbg.exe.

El generador de perfiles ANTS ha avanzado a pasos agigantados en los últimos años, y su generador de perfiles de memoria tiene algunas características realmente útiles que, en mi opinión, ahora lo sitúan por delante de dotTrace como paquete. Tengo la suerte de tener licencias para ambos, pero si vas a comprar un generador de perfiles .Net tanto para rendimiento como para memoria, conviértelo en ANTS.

Matt Howells avatar Sep 19 '2008 08:09 Matt Howells

Otros han cubierto los perfiles de rendimiento, pero con respecto a los perfiles de memoria, actualmente estoy evaluando tanto Scitech .NET Memory Profiler 3.1 como ANTS Memory Profiler 5.1 (versiones actuales a partir de septiembre de 2009). Probé JetBrains hace uno o dos años y no era tan bueno como ANTS (para perfiles de memoria), así que esta vez no me molesté. Al leer los sitios web, parece que no tiene las mismas funciones de creación de perfiles de memoria que los otros dos.

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

Estos son los principales pros y contras de cada uno según mi experiencia:

Características comunes de ANTS y ​​Scitech .NET Memory Profiler

  • Función de análisis en tiempo real
  • Excelentes vídeos instructivos en sus sitios web.
  • Fácil de usar
  • Razonablemente eficaz (obviamente más lento que sin el generador de perfiles adjunto, pero no tanto como para frustrarse)
  • Mostrar casos de objetos con fugas
  • Básicamente ambos hacen el trabajo bastante bien.

HORMIGAS

  • Filtros de un clic para encontrar fugas comunes que incluyen: objetos que se mantienen vivos solo mediante controladores de eventos, objetos que se eliminan pero aún viven y objetos que solo se mantienen vivos mediante una referencia de un objeto desechado. Esta es probablemente la característica principal 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 controladores de eventos no se desconectan y ANTS simplemente te lleva directamente a estos objetos. Impresionante.
  • 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 hijos además del tamaño del objeto en sí (pero solo cuando desafortunadamente se selecciona una instancia, no en la lista general de clases).
  • Mejor integración con Visual Studio (haga clic derecho en el gráfico para ir al archivo)

Perfilador de memoria Scitech .NET

  • Muestra el seguimiento de la pila cuando se asignó el 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 fueron desechados. Si bien no indica una fuga, identifica oportunidades para solucionar este problema y mejorar el rendimiento de su 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 que se recolectan como basura). ANTS solo muestra estadísticas de objetos 'vivos'. 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 necesariamente tienen fugas).

A modo de resumen, creo que ANTS le ayuda a encontrar lo que se está filtrando más rápido, mientras que Scitech proporciona un poco más de detalles sobre el rendimiento general de la memoria de su aplicación y los objetos individuales una vez que sabe qué mirar (por ejemplo, seguimiento de la pila en la creación). Si se agregara a ANTS el seguimiento de la pila y el seguimiento de objetos desechables no desechados, no vería la necesidad de usar nada más.

 avatar Sep 25 '2009 03:09

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

 avatar Aug 29 '2008 09:08

[ La divulgación completa ]

Si bien aún no tiene tantas funciones como algunos de los otros perfiladores de memoria .NET enumerados aquí, hay una nueva entrada en el mercado llamada JustTrace . Está hecho por Telerik y su objetivo principal es hacer que el seguimiento/elaboración de perfiles sea más fácil y rápido para todo tipo de aplicaciones (web/Silverlight/escritorio).

Si alguna vez ha encontrado que la creación de perfiles y la optimización son intimidantes o lentas con otras herramientas, entonces vale la pena echarle un vistazo a JustTrace .

Todd avatar Aug 22 '2011 15:08 Todd