Pregunta

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

¿Fue útil?

Solución

He usado JetBrains dotTrace y HORMIGAS Redgate 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 clic desde el IDE.Sin embargo, dotTrace a menudo parece dar resultados falsos (p. ej.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.

Perfilador EQATEC es bastante básico y requiere que usted compile versiones instrumentadas especiales de sus ensamblajes que luego pueden ejecutarse 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 usabilidad.

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

Actualización de 2011:

El Perfilador de memoria 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 facilite los problemas de memoria COM. diagnosticar: normalmente tienes que romper 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.

Otros consejos

Otros han cubierto los perfiles de desempeño, pero con respecto al perfil de memoria Actualmente estoy evaluando Scitech .NET Memory Profiler 3.1 y 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 lo mismo. perfil de memoria características 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 incluido: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 eliminado.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 en realidad ú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 facilita el análisis y ajuste del rendimiento general de la aplicación (p. ej.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 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.

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.

[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 JustTrace podría valer la pena echarle un vistazo.

no lo olvides nprof - un generador de perfiles gratuito perfectamente bueno.

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

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

Si buscas algo rápido, fácil y gratuito, http://code.google.com/p/slimtune/ Parece hacer el trabajo bien.

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, a mí también me gustaría saberlo :-)

No te olvides de la increíble ciencia ficción. perfilador de memoria .net

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

Yo añadiría que la capacidad de dotTrace para sesiones de seguimiento de rendimiento y memoria diferencial es absolutamente invaluable (ANTS también puede tener una función de diferenciación 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 corregir un error o mejorar y 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 se podrían encontrar cuellos de botella. MUY tedioso.Hacer una diferencia de 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 de cada método.

Esto es útil no sólo 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.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 del lado de la base de datos, pero a veces me ayuda mucho ver las métricas de rendimiento desde el lado de la aplicación (ya que eso se acerca más a lo que el usuario realmente ve).

Línea de fondo:dotTrace funciona muy bien y la diferencia es invaluable.

Hora AQ es razonable, pero tiene una pequeña curva de aprendizaje y no es tan fácil de usar como el integrado en Team Suite

En el pasado, usé el generador de perfiles que viene con Sistema de equipo de Visual Studio.

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

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

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

Dudo que el generador de perfiles que viene con Visual Studio Team System sea el mejor generador de perfiles, pero he descubierto que es bastante 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 tienes acceso a él, vale la pena echarle un vistazo.

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

Me gustaría agregar tu kit Java y .NET Profiler, me encanta para Java, aunque no he probado la versión .NET.

Desafortunadamente, la mayoría de los perfiladores que probé fallaron cuando los usé con llamadas de cola, sobre todo ANTS.Termino escribiendo el mío propio.Existe una implementación simple en CodeProject que puede usar como base.

Debo informarles sobre una herramienta increíble que he usado hace algún tiempo. Estudio de interceptor AVICode.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 actuación hizo maravillas con la ayuda de esta magnífica herramienta.Es complicado configurarlo, pero es una actividad que se realiza una sola vez y yo diría que vale la pena.Verificar esta página para detalles.

Gracias James

Para mí, SpeedTrace es la mejor herramienta del mercado porque no sólo te ayuda a encontrar cuellos de botella dentro de tus aplicaciones.También le ayuda en escenarios de solución de problemas para descubrir por qué su aplicación fallaba, su configuración no se instaló, su aplicación se colgó y el rendimiento de su aplicación a veces es deficiente según la entrada de datos, p.para identificar transacciones de base de datos lentas.

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

Si la licencia es un problema, puede probar WINDBG para crear perfiles de memoria.

El generador de perfiles NuMega True Time sigue vivo en DevPartner Studio de Micro Focus.Proporciona detalles a 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 versus aquellas con largas esperas de E/S usando nuestro controlador de sincronización patentado en modo kernel por subproceso.La versión 10.5 se envía con nuevo soporte para 64 procesos el 4 de febrero de 2011.Enchufe descarado:Trabajo en la línea de productos DevPartner.Seguimiento en http://www.DevPartner.com para noticias sobre el lanzamiento de 10.5.

Descargo de responsabilidad:Soy el director de producto de DevPartner en Micro Focus.

Encontré muchos problemas en una gran aplicación de C# usando este.

Por lo general, el problema ocurre durante el inicio o el apagado mientras 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 cambios se agregan varias veces, lo que agrava aún más el problema.

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

Seleccionamos YourKit Profiler para .NET en mi empresa porque tenía la mejor relación calidad-precio (precio vs.característica).Para una pequeña empresa que quiere tener licencias flexibles (licencias flotantes), fue la elección perfecta: ANTS era el medallón de desarrollador en ese momento.

Además, nos brindó la posibilidad de adjuntarnos al proceso en ejecución, lo 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 las aplicaciones .NET iniciadas por otros procesos.En cuanto a las funciones, ANTS y ​​dotTrace fueron mejores, pero al final YourKit fue lo suficientemente bueno.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top