¿Cuáles son algunos buenos perfiladores .NET?

374

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

ricos
fuente

Respuestas:

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 solo 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 perfil. 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 generador de perfiles EQATEC es bastante básico y requiere que compile versiones instrumentadas especiales de sus ensamblajes que luego se pueden ejecutar en el generador de perfiles 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 la usabilidad.

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

Actualización 2011:

El generador de perfiles de memoria Scitech tiene una interfaz de usuario bastante básica, pero mucha información útil, incluida cierta información sobre memoria no administrada de la que carecen dotTrace y ANTS; puede que le resulte útil si está haciendo interoperabilidad COM, pero aún no he encontrado ningún generador de perfiles que haga COM problemas de memoria fáciles de diagnosticar; por lo general, tiene 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 ahora lo adelantaron a dotTrace como un paquete en mi opinión. Tengo la suerte de tener licencias para ambos, pero si va a comprar uno .Net profiler para rendimiento y memoria, hágalo ANTS.

Matt Howells
fuente
55
El generador de perfiles en Visual Studio también es realmente fácil de usar, Visual Studio 2010 está en Beta y, por lo tanto, también es gratuito. Ha habido múltiples mejoras en 2010 para ver la contención y la concurrencia. probarlo ...
Rick
15
@Rick Desafortunadamente, el generador de perfiles de Visual Studio no está presente en Professional Edition ...
Drake
Estoy totalmente en desacuerdo con que el generador de perfiles CLR sea todo lo que necesita para la creación de perfiles de memoria .NET, aunque posiblemente sea cierto si no le da valor a su tiempo. Vea mi respuesta a continuación para obtener un resumen de los mejores perfiladores de memoria: le ayudarán a encontrar pérdidas de memoria y posibles problemas mucho más rápido.
Ben Robbins
1
Las versiones actuales del perfilador EQUATEC ya no son gratuitas.
David Schmitt
1
Parece que se ha convertido en EQATEC Profiler libre para .NET (marco completo) de nuevo
soren.enemaerke
88

Otros han cubierto la creación de perfiles de rendimiento, pero con respecto a la creación de perfiles 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 uno o dos años y no era tan bueno como ANTS (para el perfil de memoria), así que no me he molestado esta vez. Al leer los sitios web, parece que no tiene las mismas características de creación de perfiles de memoria que los otros dos.

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

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

Características comunes de ANTS 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 generador de perfiles adjunto, pero no tanto que te sientas frustrado)
  • Mostrar instancias de objetos con fugas
  • Básicamente, ambos hacen el trabajo bastante bien

HORMIGAS

  • Filtros de un clic para encontrar fugas comunes, incluidos: objetos mantenidos vivos solo por los controladores 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 ANTS: encontrar fugas es increíblemente rápido debido a esto. En mi experiencia, la mayoría de las filtraciones son causadas por controladores de eventos que no se desenganchan y ANTS simplemente lo lleva directamente 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 elementos secundarios 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 el gráfico para saltar al archivo)

Scitech .NET Memory Profiler

  • Muestra el seguimiento de la pila cuando se asignó el objeto. Esto es realmente útil para los objetos que se asignan 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, 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 desechos recolectados). 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 innecesariamente muchos objetos que no necesariamente tienen fugas).

A modo de resumen, creo que ANTS lo 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 la aplicación y los objetos individuales una vez que sabe qué mirar (por ejemplo, seguimiento de pila en la creación). Si el seguimiento de la pila y el seguimiento de objetos desechables no expuestos se agregaran a ANTS, no vería la necesidad de usar nada más.

Ben Robbins
fuente
La versión 4.0 de .NET Memory Profiler (ahora en versión preliminar) ahora tiene una vista gráfica. Esta fue la única característica que me gustó en el analizador ANTS que Scitech no tenía (en 3.1 / 3.5).
cplotts
45

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

TrolleFar
fuente
También falla en las llamadas de cola :( Error reportado.
leppie
Este es solo gratuito para uso no comercial.
Jon Seigel
77
Fue completamente gratis en agosto de 2008 cuando TrolleFar escribió su respuesta. Ahora, como dice Jon, solo es gratis para uso no comercial.
Richard Flamsholt
8
Resulta que volvieron a cambiar los términos de la licencia. Partes de él son gratis para uso comercial nuevamente.
TrolleFar
A partir de FEB2011, la edición normal de .NET para self / commercial es gratuita. Esta herramienta es buena porque funciona en el modelo cliente / servidor y puede perfilar / omitir límites repetidos (por ejemplo, Native-> COM-> NET-> COM-> NET puede ser perfilado). Sin embargo, la interfaz de usuario es bastante horrible :-)
31

[ Divulgación completa ]

Si bien todavía no tiene todas las 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 / perfil 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 lentos con otras herramientas, entonces vale la pena echar un vistazo a JustTrace .

Todd
fuente
12
Cuando voy a descargarlo y probarlo, Telerik quiere que me "registre" y "cree una cuenta". Y todos esos botones de suscripción al boletín están marcados por defecto. Me encantaría probar JustTrace, pero no si Telerik lo hace tan difícil.
Ryan Lundy
1
Gracias por intentarlo, Kyralessa. Sabemos que el proceso puede mejorarse. Estamos trabajando en eso ahora mismo. Esperamos eliminar esos obstáculos pronto. Por ahora, simplemente desmarque las casillas y en 2 minutos puede tener una cuenta y descarga gratuita de JustTrace. Perdón por los problemas a corto plazo. -T
Todd
99
publique de nuevo y avíseme cuándo puedo descargar sin crear una cuenta, y lo intentaré.
Ryan Lundy
44
Actualización: Hoy pude descargar usando el enlace en la respuesta sin tener que crear una cuenta.
Ryan Lundy
25

No olvides nProf , un perfilador de software gratuito perfectamente bueno.

Greg Hurlman
fuente
3
Parece un poco abandonado ... solo una versión alfa de 2006 :-(
Mauricio Scheffer
2
Funcionó muy bien para mí. Ahora es un proyecto de Google Code. Se lanzó en julio de 2009.
Usuario1
19
La página nProf ahora dice: NProf ya no se desarrolla activamente. Si está buscando un generador de perfiles de .NET de código abierto, eche un vistazo a SlimTune ( code.google.com/p/slimtune )
Richard Ev
14

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

Chris Ballance
fuente
12

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

palmsey
fuente
11

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

Lars Truijens
fuente
MemProfiler ha salvado a nuestro equipo cuando tuvimos una pérdida de memoria. Probé otras herramientas, pero ninguna otra herramienta dio el mismo detalle.
Greg Ogle
9

He estado trabajando con JetBrains dotTrace para WinForms y aplicaciones de consola (aún no probado en ASP.net), 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 :-)

Michael Stum
fuente
7

No olvides el increíble generador de perfiles de memoria scitech .net

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

Sam Azafrán
fuente
1
Muy buena herramienta. Fácil de usar y le permite navegar a través de su gráfico de objetos. Me gusta espacialmente el seguimiento de memoria 'en tiempo real'. Le muestra cómo se desarrolla su recuento de objetos durante el tiempo de ejecución de la aplicación.
lowglider
5

Agregaría la capacidad de dotTrace para diferenciar la memoria y las sesiones de seguimiento del rendimiento es absolutamente invaluable (ANTS también puede tener una función de diferencia de memoria, 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 o mejora de errores, luego comparar los resultados es increíblemente valioso, especialmente con una gigantesca aplicación .NET heredada (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 de antes y después le permite ver el cambio en el conteo de llamadas para cada método y el cambio en la duración de 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 ayudo 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 está viendo realmente).

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

shaunmartin
fuente
4

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

Jeff Moser
fuente
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 SharpDevelop IDE 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, salta directamente al código fuente.

David Schmitt
fuente
2

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

Kev
fuente
2

No lo he intentado yo mismo, pero tal vez dotTrace ? Su aplicación ReSharper es ciertamente una buena. Quizás dotTrace también lo sea :)

Svish
fuente
1
He usado dotTrace y puedo recomendarlo.
Jon Skeet
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é necesitas específicamente más allá de lo que ofrece VS?

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

Brian Rasmussen
fuente
1
Estaba hablando de uno en VS2008, pero puede que no esté disponible en todas las versiones (estoy usando VSTS). De los videos PDC2008 parece que el generador de perfiles mejorará mucho en VS2010.
Brian Rasmussen
1
Ese generador de perfiles solo está disponible con las versiones de Visual Studio de Team Systems.
Chris Brandsma
Visual Studio Team System (Developer Edition) tiene un generador de perfiles. Ver < microsoft.com/visualstudio/en-us/products/teamsystem/… >.
gix
Visual Studio tiene un generador de perfiles desde VS 2005. Solo está disponible con Team System. Esa es, de hecho, la razón por la que uso el sistema de equipo (en el trabajo tengo un profesional). Es un muy buen perfilador, en mi opinión.
configurador
Es un buen perfilador, pero no está a la altura de la nueva versión de ANTS.
mqp
2

¡La última versión del analizador de memoria ANTS (creo que es 5) simplemente es genial! Estaba frecuentando 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.

pablo
fuente
2

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

Redlab
fuente
1

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

leppie
fuente
1

Debo notificarles una herramienta increíble que he usado alguna vez. 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 difícil configurarlo, pero es una actividad única y diría que vale la pena. Mira esta página para más detalles.

Gracias James

James Poulose
fuente
1

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

Puñal
fuente
1

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

Ivan Petrov
fuente
1

Si las licencias son un problema, puede probar WINDBG para crear perfiles de memoria

Vibes
fuente
1

El generador de perfiles NuMega True Time sigue vivo en DevPartner Studio by Micro Focus. Proporciona detalles de nivel de línea y método para aplicaciones .NET que solo requieren PDB, no se necesita fuente (pero ayuda). Puede discriminar entre rutinas algorítmicamente pesadas en comparación con aquellas con largas esperas de E / S utilizando nuestro controlador de temporización de modo kernel por hilo patentado. La versión 10.5 se entrega con un nuevo soporte para 64 procesos el 4 de febrero de 2011. Enchufe descarado: trabajo en la línea de productos DevPartner. Haga un seguimiento en http://www.DevPartner.com para conocer las novedades del lanzamiento de 10.5.

Descargo de responsabilidad: soy el gerente de producto de DevPartner en Micro Focus.

Matt Schuetze
fuente
bienvenido a SO. Deberá divulgar cualquier relación con DevPartner o se lo considerará un spammer y se lo tratará como tal. Veo que has respondido una serie de preguntas de perfil ...
John Saunders
0

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

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

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

Mike Dunlavey
fuente
0

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

Además, nos proporcionó la capacidad de adjuntarnos al proceso de 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 era la única forma 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.

Slobodan Savkovic
fuente
A partir de enero de 2012, YourKit ha elevado los precios para el generador de perfiles YourKit. Por lo tanto, la ventaja de precio puede que ya no sea válida.
0

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

eka808
fuente