¿Qué perfiladores ha utilizado al trabajar con programas .net y cuáles recomendaría especialmente?
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.
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
HORMIGAS
Scitech .NET Memory Profiler
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.
fuente
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.
fuente
[ 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 .
fuente
No olvides nProf , un perfilador de software gratuito perfectamente bueno.
fuente
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.
fuente
ANTS Profiler . No he usado muchos, pero realmente no tengo ninguna queja sobre ANTS. La visualización es realmente útil.
fuente
AutomatedQA AQTime para temporización y SciTech MemProfiler para memoria.
fuente
Si está buscando algo rápido, fácil y gratuito, http://code.google.com/p/slimtune/ parece hacer el trabajo bien.
fuente
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 :-)
fuente
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.
fuente
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.
fuente
AQTime es razonable, pero tiene una curva de aprendizaje y no es tan fácil de usar como el integrado en Team Suite
fuente
En el pasado, he usado el generador de perfiles que se incluye con Visual Studio Team System .
fuente
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.
fuente
He trabajado con el perfilador de RedGate en el pasado. Hizo el trabajo por mí.
fuente
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 :)
fuente
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.
fuente
¡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.
fuente
Me gustaría agregar yourkit java y .net profiler, me encanta para Java, aunque no he probado la versión .NET.
fuente
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.
fuente
Analizador de rendimiento Intel® VTune ™ para muestreo rápido
fuente
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
fuente
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.
fuente
He estado probando JustTrace de Telerik recientemente y, aunque está muy lejos de un producto terminado, los chicos van en la dirección correcta.
fuente
Si las licencias son un problema, puede probar WINDBG para crear perfiles de memoria
fuente
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.
fuente
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.
fuente
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.
fuente
Si está en ASP.NET MVC, puede probar MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)
fuente