¿Cuáles Son Algunos Good.NET ¿Perfiladores?


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

Author: ricree, 2008-08-07

30 answers

He usado JetBrains dotTracey Redgate ANTS extensamente. 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 solo clic desde el IDE. Sin embargo, dotTrace a menudo parece dar resultados espurios (por ejemplo, diciendo que un método tardó varios años en ejecutarse)

Prefiero la forma en que LAS HORMIGAS presentan los resultados de los 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.

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

En general, prefiero ANTS para el perfil de rendimiento, aunque si usa Resharper, entonces la integración de dotTrace es una característica asesina y significa que supera a las HORMIGAS en usabilidad.

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

2011 Actualización:

El Scitech memory profiler tiene una interfaz de usuario bastante básica, pero mucha información útil, incluida cierta información sobre la memoria no administrada de la que carecen dotTrace y ANTS-puede que le resulte útil si está haciendo COM interop, pero todavía tengo que encontrar cualquier analizador que hace COM problemas de memoria es fácil de diagnosticar - por lo general, tiene que romper windbg.exe.

El perfilador de HORMIGAS ha llegado a pasos agigantados en los últimos años, y su perfilador de memoria tiene algunas características verdaderamente útiles que ahora lo empujaron por delante de dotTrace como un paquete en mi estimación. Tengo la suerte de tener licencias para ambos, pero si usted va a comprar un.Net profiler tanto para el rendimiento y la memoria, que sea HORMIGAS.

 285
Author: Matt Howells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-04 09:27:44

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

Tanto ANTS como Scitech Memory profiler tienen características que el otro no tiene, por lo que cuál es mejor dependerá de sus preferencias. En términos generales, el Scitech one proporciona información más detallada, mientras que el ANTS one es realmente increíble para identificar el objeto que gotea. En general, prefiero el de las HORMIGAS porque es muy rápido en la identificación de posibles fugas.

Aquí están los pros y los contras de cada uno de mi experiencia:

Características comunes de las HORMIGAS y Scitech. NET Memory Profiler

  • Función de análisis en tiempo real
  • Excelentes videos instructivos en sus sitios web
  • Fácil de usar
  • Razonablemente eficiente (obviamente más lento que sin el perfilador adjunto, pero no tanto se frustra)
  • Mostrar instancias de objetos filtrados
  • , Básicamente, ambos hacen el trabajo bastante bien

HORMIGAS

  • Filtros con un solo clic para encontrar fugas comunes incluyendo: objetos mantenidos vivos solo por los manejadores de eventos, objetos que están dispuestos pero aún vivos y objetos que solo se mantienen vivos por una referencia de un objeto dispuesto. Esta es probablemente la característica asesina de LAS HORMIGAS - encontrar fugas es increíblemente rápido debido a esto. En mi experiencia, la mayoría de las fugas son causadas por los manipuladores de eventos que no se desenganchan y LAS HORMIGAS solo te llevan directamente a estos objetos. Impresionante.
  • Gráfico de retención de objetos. Mientras que la misma información está disponible en Scitech, es mucho más fácil de interpretar en HORMIGAS.
  • Muestra el tamaño con hijos 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 con Visual Studio (haga clic derecho en graph para saltar al archivo)

Scitech. NET Memory Profiler

  • Muestra el seguimiento de la pila cuando se asignó el objeto. Esto es realmente útil para objetos que se asignan en lotes de diferentes lugares. Con las HORMIGAS 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, 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 (varias columnas se pueden filtrar de forma independiente).
  • Presenta información sobre el total de objetos creados (incluidos los recogida de basura). HORMIGAS 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 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 detalle sobre el rendimiento general de la memoria de la aplicación y los objetos individuales una vez que sepa qué mirar (por ejemplo. stack trace en la creación). Si el stack trace y el seguimiento de objetos desechables no expuestos se añadió a las HORMIGAS No veo la necesidad de utilizar cualquier otra cosa.

 88
Author: Ben Robbins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-25 03:16:32

Recientemente descubrí EQATEC Profiler http://www.eqatec.com/tools/profiler . Funciona con la mayoría de las versiones de.NET y en un montón de plataformas. Es fácil de usar y partes de ella es gratis, incluso para uso comercial.

 45
Author: TrolleFar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-22 09:31:37

[Divulgación Completa]

Aunque todavía no está tan completo como algunos de los otros perfiladores de memoria.NET listados aquí, hay una nueva entrada en el mercado llamada JustTrace. Está hecho por Telerik y su objetivo principal es hacer que el rastreo/perfilado sea más fácil y rápido para todo tipo de aplicaciones (web/Silverlight/desktop).

Si alguna vez has encontrado que el perfilado y la optimización son intimidantes o lentos con otras herramientas, entonces JustTrace podría valer la pena Mira.

 31
Author: Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:27

No olvides nProf - un perfilador freeware perfectamente bueno.

 25
Author: Greg Hurlman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-23 14:40:59

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

 14
Author: Chris Ballance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-04 22:23:30

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

 12
Author: palmsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-06 20:19:00

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

 11
Author: Lars Truijens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-29 09:49:56

Si estás buscando algo rápido, fácil y gratuito, http://code.google.com/p/slimtune / parece hacer bien el trabajo.

 11
Author: Taudris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-29 20:04:40

He estado trabajando con JetBrains dotTrace para WinForms y Aplicaciones de consola (no probado en ASP.net sin embargo), y funciona bastante bien:

Recientemente también agregaron una "Licencia Personal" que es significativamente más barata que la corporativa. Aún así, si alguien más conoce algunos más baratos o incluso gratuitos, me gustaría escuchar también: -)

 9
Author: Michael Stum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-28 13:41:47

No se olvide del impresionante scitech . net memory profiler

Es ideal para rastrear por qué su aplicación.net se está quedando sin memoria.

 7
Author: Sam Saffron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 22:25:20

Añadiría que la capacidad de dotTrace para diff memory y performance trace sessions es absolutamente invaluable (LAS HORMIGAS también pueden tener una función de diff de memoria, pero no vi una diff de rendimiento).

Poder ejecutar una sesión de creación de perfiles antes y después de una corrección o mejora de errores, y luego comparar los resultados es increíblemente valioso, especialmente con una gigantesca aplicación legacy. NET (como en mi caso) donde el rendimiento nunca fue una prioridad y donde encontrar cuellos de botella podría ser MUY tedioso. Hacer una diferencia antes y después 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 son contribuyendo a la lentitud. Por supuesto, hay muchas herramientas de rendimiento del lado de la base de datos, pero a veces realmente ayuda ver las métricas de rendimiento del lado de la aplicación (ya que eso está más cerca de lo que el usuario está viendo realmente).

En pocas palabras: dotTrace funciona muy bien, y la diferencia es invaluable.

 5
Author: shaunmartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-07 23:29:35

AQTime es razonable, pero tiene un poco de curva de aprendizaje y no es tan fácil de usar como el integrado en Team Suite

 4
Author: Jeff Moser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-04 22:19:44

En el pasado, he utilizado el generador de perfiles que viene con Visual Studio Team System.

 3
Author: Ant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-31 05:12:31

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

 3
Author: David Schmitt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-21 11:10:50

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

 2
Author: Kev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-06 20:17:06

No lo he probado yo mismo, pero tal vez dotTrace? Su aplicación ReSharper es sin duda una buena. Tal vez dotTrace es demasiado:)

 2
Author: Svish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-04 22:19:50

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é necesitas específicamente más allá de lo que ofrece VS?

EDITAR: Desafortunadamente, solo está disponible en el sistema VS Team, pero si tiene acceso a eso, vale la pena echarle un vistazo.

 2
Author: Brian Rasmussen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-04 22:30:36

La última versión de ANTS memory profiler (creo que es 5) simplemente rocas!!! Estaba rondando una fuga usando WinDbg y SOS ya que demostró ser la mejor manera antes, luego probé HORMIGAS y lo conseguí en minutos. Realmente una maravillosa pieza de software.

 2
Author: pablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-07 22:07:10

Me gustaría añadir yourkit java y.net profiler, me encanta para Java, aunque no he probado la versión. NET.

 2
Author: Redlab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-15 09:56:31

Desafortunadamente la mayoría de los perfiladores que probé fallaron cuando se usaron con llamadas de cola, sobre todo HORMIGAS. Acabo de escribir la mía. Hay una implementación simple en CodeProject que puede usar como base.

 1
Author: leppie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 08:38:59
 1
Author: utility73,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 08:48:46

Debo traer una herramienta increíble a su atención que he utilizado en algún momento atrás. AVICode Interceptor Studio . En mi empresa anterior utilizamos esta maravillosa herramienta para perfilar la aplicación web ( Se supone que esta es la aplicación web más grande del mundo y el proyecto de TI civil más grande jamás realizado). El equipo de rendimiento hizo maravillas con la ayuda de esta magnífica herramienta. Es un dolor configurarlo, pero esa es una actividad de una sola vez y yo diría que vale la pena tiempo. Checkout esta página para más detalles.

Gracias, James

 1
Author: James Poulose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-16 21:07:33

Para mí SpeedTrace es la mejor herramienta del mercado porque no solo te ayuda a encontrar cuellos de botella dentro de tus aplicaciones. También le ayuda en escenarios de solución de problemas para averiguar por qué su aplicación se bloqueaba, su configuración no se instaló, su aplicación se colgó, el rendimiento de su aplicación a veces es pobre dependiendo de la entrada de datos, por ejemplo, para identificar transacciones de base de datos lentas.

 1
Author: Dirk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 11:31:45

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

 1
Author: Ivan Petrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-02 13:05:29

Si la licencia es un problema, podría probar WINDBG para la creación de perfiles de memoria

 1
Author: Vibes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-02 17:55:45

NuMega True Time profiler vive en DevPartner Studio by Micro Focus. Proporciona detalles a nivel de línea y método para aplicaciones. NET que solo requieren PDBs, sin necesidad de fuente (pero ayuda.) Puede discriminar entre rutinas algorítmicamente pesadas versus aquellas con largas esperas de E/S usando nuestro controlador de sincronización de modo de kernel por hilo patentado. La versión 10.5 se envía con nuevo soporte de 64 procesos el 4 de febrero de 2011. Shameless plug: Trabajo en la línea de productos DevPartner. Seguimiento en http://www.DevPartner.com para noticias del lanzamiento de la versión 10.5.

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

 1
Author: Matt Schuetze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-13 16:23:14

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

Por lo general, el problema ocurre durante el inicio o el apagado, ya que se cargan complementos y se crean, destruyen, serializan o deserializan estructuras de big data. A menudo se crean e inicializan más de una vez, y los controladores de cambio se agregan varias veces, agravando aún más el problema.

En casos como este, el programa puede ser tan lento que solo 2 muestras son suficientes para identificar el sitios de llamadas a métodos / funciones / propiedades culpables.

 0
Author: Mike Dunlavey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:01

Seleccionamos YourKit Profiler para.NET en mi empresa, ya que era el mejor valor (precio vs. característica). Para una pequeña empresa que quiere tener licencias flexibles (licencias flotantes) fue una elección perfecta - ANTS era locket seat desarrollador en el momento.

También, nos proporcionó la capacidad de adjuntar al proceso en ejecución que no era 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 manera de perfilar Aplicaciones. NET iniciadas por otros procesos. En cuanto a las características, ANTS y dotTrace fueron mejores, pero al final YourKit fue lo suficientemente bueno.

 0
Author: Slobodan Savkovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-09 16:12:17

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

 0
Author: eka808,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-13 14:41:04