¿Algún perfilador de C # decente por ahí? [cerrado]

83

Necesito un generador de perfiles de C #.

Aunque no soy reacio a pagar por uno, algo que sea gratis o al menos con una versión de prueba sería ideal, ya que se necesita tiempo para generar una orden de compra.

¿Alguna recomendación?

Gareth Simpson
fuente
5
posible duplicado de ¿Cuáles son algunos buenos perfiladores de .NET?
BlueRaja - Danny Pflughoeft
Dice mucho sobre SO que una razón para censurar una pregunta es que "es probable que solicite debate".
Glenn Maynard

Respuestas:

35

Puedes probar lo siguiente:


Editar: Nprof ha sido reemplazado por SlimTune y funciona con aplicaciones .Net 4.0

jfs
fuente
7
He jugado con ProfileSharp. Es absolutamente espantoso.
Matthew Ruston
1
nprof es .Net 1.1 solo creo. Si puede compilar en .Net 1.1, puede ser útil perfilarlo y luego volver a compilarlo en .Net 2 para su lanzamiento. Sin embargo, esto no es posible si comienza a usar funciones .Net2 como genéricos y tipos que aceptan valores NULL.
redcalx
1
De acuerdo con Matthew, ProfileSharp es terrible, no podría hacer que perfilara ni siquiera el exe de línea de comandos más simple. No pierdas el tiempo
Michael Dausmann
El desarrollo en nprof parece haberse recuperado recientemente.
Brian Ortiz
1
He utilizado .Net Memory Profiler para encontrar una pérdida de memoria; es bastante bueno. ¡Tiene mi sello de aprobación!
Cylon Cat
40

Solía hormigas perfilador en un gran proyecto de C # hace un año y medio. Realmente funcionó muy bien por lo que costó, e incluso superó a algunos de los competidores más caros.

Calcula el costo con casi una resolución línea por línea.

AdamSane
fuente
1
También me gustan las HORMIGAS. Es de Redgate.
Marcel
32

El perfilador EQATEC es muy bueno y es completamente gratuito. Es fácil de configurar y usar, y no parece agregar demasiada sobrecarga a la aplicación. Recién comencé a usarlo hoy y ya he encontrado un par de cuellos de botella que no habría detectado de otra manera.

CascoCiudadSteve
fuente
No es gratis para una licencia comercial (pero sigue siendo barato, $ 200).
mhenry1384
Sí, parece que han cambiado las licencias de la última versión y han comenzado a cobrar por uso comercial. Sin embargo, todavía lo recomiendo encarecidamente.
HullCitySteve
3
Actualización: parece que han cambiado los términos de la licencia nuevamente para que sea gratuito para uso comercial para aplicaciones .NET estándar (pero no CF o Silverlight)
HullCitySteve
3
Los términos de la licencia han cambiado nuevamente en la versión 3.6: ahora es gratis para todas las plataformas, incluidas CF y Silverlight, con una restricción en la cantidad de DLL que se pueden instrumentar en una sesión.
Richard Flamsholt
3
Ya no es gratis y ha sido comprado por Telerik :(
pingoo
29

dotTrace de JetBrains se usa ampliamente.

El increíble NDepend de Patrick Smacchia es excelente para proporcionar análisis estático.

Leon Bambrick
fuente
1
dotTrace es realmente un excelente generador de perfiles, extremadamente fácil de usar.
Stefan Monov
dotTrace 3.1 no funciona con .NET 4. Tenemos que esperar a dotTrace 4.0.
Bobby Cannon
1
Como actualización, tanto dotTrace 4 Performance como dotTrace 3.5 Memory son compatibles con .NET 4.
Jura Gorohovsky
11

Mantengo una lista completa de perfiladores para .NET en SharpToolbox.com.

Allí encontrará las herramientas sugeridas aquí y más, cada una con una breve descripción de lo que propone.

Fabrice
fuente
Esto parece desactualizado (las entradas de Redgate están bastante obsoletas)
Andrew Harry
Harry, gracias por señalar esto. La información sobre todos los productos RedGate ahora está actualizada. sharptoolbox.com/authors/red-gate-software
Fabrice
7

Es interesante que nadie mencione que hay uno en las versiones de gama alta de Visual Studio; siempre he encontrado que es lo suficientemente bueno para la generación de perfiles de ejecución. Para la creación de perfiles de memoria, uso Memory Profiler, que ya se ha mencionado, pero no es lo que generalmente describiría como "un perfilador".

¿Qué tipo de elaboración de perfiles estaba intentando hacer?

Will Dean
fuente
6

Usamos .NET Memory Profiler . Es un poco feo pero muy útil para encontrar referencias colgantes.

Originalmente probé el generador de perfiles ANTS de Red Gate, que es muy sexy, pero desde el punto de vista de la pérdida de memoria, apesta por las siguientes razones:

1) Es ridículamente lento. Se tardó media hora en poner la aplicación en un estado para comenzar a grabar (toma 20 segundos sin puerta roja).

2) Red Gate necesita ejecutar su propia herramienta en su propia herramienta. ¡Estaba usando 900 MB de memoria cuando terminé dos instantáneas! Luego se estrelló :(

Sin embargo, el componente de sincronización de Red Gate ANTS fue impresionante. Simplemente no se moleste con el generador de perfiles de memoria, a menos que esté tratando con una aplicación trivial (de pequeño tamaño).

Craigger
fuente
2
¿Has probado la v4 de ambos? Es mucho mejor en general ahora :)
thecoop
4

He usado AQtime y nunca me ha defraudado. Estoy seguro de que hay una versión de prueba.

marca
fuente
AQTime tiene un gran beneficio sobre los ANT, ya que admite código no administrado.
Rick Minerich
3

Seré el perfilador ANTS del segundo Red Gate . Lo usé para rastrear algunos problemas de rendimiento realmente preocupantes y fue muy simple de usar (curva de aprendizaje baja) y presentó datos agradables y detallados de una manera fácil de entender. El precio vale la pena, pero no es gratis ...

Jason Sundram
fuente
2

El increíble NDepend de Patrick Smacchia es excelente para proporcionar análisis estático.

Recomendaría encarecidamente NDepend para el análisis estático, pero tenga en cuenta que probablemente tendrá que reservar uno o dos días para analizar realmente la gran cantidad de información que proporciona, así como averiguar qué significan todas las estadísticas en términos de tu codigo.

lomaxx
fuente
2

He tenido buena suerte con el generador de perfiles de memoria .NET

Curandero
fuente
2

El generador de perfiles EQATEC hizo el trabajo aquí.


fuente
2

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 SharpDevelop IDE y su corredor NUnit. Los resultados se muestran en un estilo flexible de árbol / lista (use LINQ para crear su propia selección). Hacer doble clic en el método mostrado salta directamente al código fuente.

David Schmitt
fuente
1

Actualmente no los utilizo, un amigo mío se entusiasma con el perfilador de hormigas. Sé que es un producto de pago, no estoy seguro de cuán caro. Si tiene un MVP como personal, es posible que pueda aprovecharlo para obtener una licencia gratis.

DesarrollandoChris
fuente
¿Puede proporcionar un poco más de detalle sobre todo el asunto de MVP? gracias,
kay.one
Los MVP obtienen la licencia para redgate de los productos de forma gratuita, es una laguna que te permite entrar, si tienes personas en tu equipo que son MVP que hacen que el costo no sea un problema.
DevelopingChris
¿Tiene un enlace que describa esta laguna y cómo sacar provecho de ella?
Keith Sirmons
1

AQTime (tanto rendimiento como memoria) o ANTS (perfilador de rendimiento v4 o perfilador de memoria beta v5) aquí.

Miha Markic
fuente
0

Encontré el .NET Memory Profiler ayer, y debo decir que estoy muy impresionado por él.
Voy a pedir mi licencia hoy.

Patrik Svensson
fuente
0

Aunque no es muy bueno para perfilar el uso de la memoria, el generador de perfiles incluido en algunas versiones de Visual Studio hace un muy buen trabajo al perfilar la velocidad de ejecución.

Caballero meta
fuente
Una forma de acceder al generador de perfiles VS2010 es, después de cargar una solución, en el menú "Depurar" buscar "Iniciar análisis de rendimiento". Los detalles de sus capacidades están en msdn.microsoft.com/query/…
ShawnFeatherly
0

Cual es tu objetivo?

¿Es su objetivo ubicar declaraciones específicas y tener una idea aproximada de lo que contribuyen a su tiempo total de ejecución, para que pueda encontrar formas de hacerlas de manera diferente?

Por eso, lo juro por este método.

Mike Dunlavey
fuente