¿Cuál es el mejor perfilador C ++ gratuito para Windows? [cerrado]

224

Estoy buscando un generador de perfiles para encontrar el cuello de botella en mi código C ++. Me gustaría encontrar una herramienta de perfil gratuita, no intrusiva y buena. Soy un desarrollador de juegos, y uso PIX para Xbox 360 y me pareció muy bueno, pero no es gratis. Conozco el Intel VTune , pero tampoco es gratis.

ugasoft
fuente
VTune parece ser gratuito ahora: software.intel.com/en-us/vtune . Descargué la edición comunitaria y hace un gran trabajo en el perfil de C ++, así como en el código C # administrado
Dr. ABT
1
¿Cómo es esto fuera de tema? Las herramientas de desarrollo están en el tema hasta donde yo sé. Sin embargo, está basado en opiniones.
Nic Szerman el

Respuestas:

135

CodeXL ahora ha reemplazado al Analista de Código AMD de Fin de Línea y ambos son gratuitos, pero no tan avanzados como VTune. También está Sleepy , que es muy simple, pero hace el trabajo en muchos casos.

yrp
fuente
44
Aquí está el enlace para CodeAnalyst: developer.amd.com/CPU/CODEANALYST/Pages/default.aspx
epotter
1
Intenté trabajar con él ahora, y no me gustó en absoluto. Ni siquiera podía entender cómo obtener el% de tiempo total de la función (incluidos los llamados) que TrueTime podía hacer bien hace 10 años.
Pavel Radzivilovsky
Escribí una adaptación de sueño que no depende de wxWidgets pero se ejecuta en la línea de comando. Lo ejecuta durante un período de tiempo contra un proceso en ejecución y luego, cuando lo detiene, obtiene las estadísticas de lo que el proceso estaba gastando. No es intrusivo, ya que no tiene que modificar su código de ninguna manera para usarlo, pero sí suspende sus hilos mientras lee las pilas de llamadas. También necesita los archivos pdb disponibles para que pueda obtener resultados significativos, pero supongo que eso se aplica a cualquier generador de perfiles.
CashCow
Recomendaría probar xperf. Lo encontré superior al analista de código AMD.
MW_dev
1
CodeAnalyst no recibirá más actualizaciones, excepto las correcciones de errores críticos. Cambiaron a CodeXL. Aquí está el enlace para que pueda actualizar su respuesta. Y gracias por dejarme ahora sobre CodeAnalyst / XL, por cierto.
Adri CS
61

Very Sleepy es un generador de perfiles de CPU C / C ++ para sistemas Windows (gratis).
CppCheck es un generador de perfiles de CPU C / C ++ estático para sistemas Windows (gratis).

lsalamon
fuente
20
googletest es un marco de pruebas unitarias. ¿Cómo usarías eso para realizar el perfilado?
greatwolf
Si está utilizando un binario de Windows de la pila de gcc, esta es una gran opción: AMD CodeAnalyst no reconoce los símbolos de gcc en Windows, ¡pero sí tiene mucho sueño!
Mike
17

Hay un perfilador de instrumentación (con precisión de función) para MS VC 7.1 y superior llamado MicroProfiler. Puede obtenerlo aquí (x64) o aquí (x86) . No requiere modificaciones ni adiciones a su código y es capaz de mostrar estadísticas de funciones con las personas que llaman y los que llaman en tiempo real sin la necesidad de cerrar la aplicación / detener el proceso de creación de perfiles.

Se integra con VisualStudio, por lo que puede habilitar / deshabilitar fácilmente la creación de perfiles para un proyecto. También es posible instalarlo en la máquina limpia, solo necesita ubicar la información del símbolo junto con el ejecutable que se está perfilando.

Esta herramienta es útil cuando la aproximación estadística de los perfiladores de muestreo como Very Sleepy no es suficiente.

La comparación aproximada muestra que supera a AQTime (cuando se invoca en la instrumentación, ejecución a nivel de función). El siguiente programa (optimización completa, alineación deshabilitada) se ejecuta tres veces más rápido con microperforador que muestra resultados en tiempo real, que con AQTime simplemente recolectando estadísticas:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}
Arty
fuente
1
Es fácil de usar y perfilador súper rápido. Solo un problema que no resolví es un problema que después de que terminé de depurar, la ventana del generador de perfiles no se cerró automáticamente y tienes que matarlo a través del administrador de tareas (sin eso no puedes recompilar tu proyecto).
Ludek Vodicka
1
Descubrí que después de cerrar mi aplicación con el botón CLOSE regular, la ventana del perfilador también se puede cerrar regularmente. Pero cuando salgo de la aplicación mediante el método abreviado SHIFT + F5 (detener el comando VS de depuración), el botón de cierre de la ventana del generador de perfiles está desactivado.
Ludek Vodicka
No funciona con VS 2015.
rustyx
1
Corregido a partir del 1.1.590. Ver actualizaciones en la página de Visual Studio Gallery ( visualstudiogallery.msdn.microsoft.com/… )
Arty
1
¡Esto es muy, muy bueno! ¡Debería clasificarse mucho más alto! Súper simple de instalar y ejecutar, y le brinda la mayor parte de lo que necesita saber. Mi segunda opción es Windows Performance Analyzer: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve
10

Microsoft tiene el Kit de herramientas de rendimiento de Windows .

Requiere Windows Vista, Windows Server 2008 o Windows 7.

epotter
fuente
66
¿Cómo no es gratis? Es una parte del SDK de Windows. Pude descargarlo sin ningún problema. (Es cierto, tenemos una suscripción a MSDN, por lo que algunas personas pueden tener una experiencia diferente que yo.)
epotter
1
Gratis o no, el enlace ya no funciona correctamente.
Tomáš Zato - Restablece a Monica el
7

Una nueva adición es Shiny .

​​​​​

Buggieboy
fuente
3
No se pueden encontrar archivos binarios descargables, solo códigos fuente. No muy conveniente
Monseñor
5

Recomiendo Windows Performance Toolkit (WPT) o XPERF

La herramienta de línea de comandos xperf de la línea de comandos registra los registros de seguimiento de eventos para Windows (ETW) que se pueden analizar con la herramienta GUI xperfview.

El uso de argumentos de línea de comando stacktrace ha demostrado ser una herramienta invaluable para mi empresa, ya que perfila y soluciona los cuellos de botella. Una de las cosas más convincentes es que el WPT se puede instalar en cualquier entorno, incluso en el venerable Windows XP .

En Windows 8, el Analizador de rendimiento de Windows lleva xperf a un nivel aún más alto.

Los números duros y las estadísticas proporcionadas en los registros de ETW no tienen paralelo en detalle, excepto para el visual studio profiler (2010/2012), que también es excelente, pero no gratuito AFAIK.

Si nunca ha usado xperf ... no sabe lo que se está perdiendo

Coda
fuente
1
Bueno, sé que me falta la URL de trabajo del sitio.
Tomáš Zato - Restablece a Monica el
3

Uso AQTime, es una de las mejores herramientas de creación de perfiles que he usado. No es gratuito, pero puede obtener una prueba de 30 días, por lo que si planea optimizar y perfilar solo un proyecto y 30 días son suficientes para usted, le recomendaría usar esta aplicación. ( http://www.automatedqa.com/downloads/aqtime/index.asp )

dudico
fuente
Solo esta herramienta me ayudó a perfilar una aplicación web mixta compilada en modo de lanzamiento (administrada y nativa) en IIS.
Monseñor
Es lamentable que no apoyen a las personas que intentan evaluar su producto.
Lucky Luke
Actualmente están ofreciendo una prueba de 14 días con funcionalidad limitada.
Max
2

Por favor, prueba mi generador de perfiles, llamado cRunWatch. Son solo dos archivos, por lo que es fácil de integrar con sus proyectos y requiere agregar exactamente una línea para instrumentar un fragmento de código.

http://ravenspoint.wordpress.com/2010/06/16/timing/

Requiere la biblioteca Boost.

revs ravenspoint
fuente
0

He usado "TrueTime - parte de la suite DevPartner de Compuware durante años. Hay una [versión gratuita] (puedes probar Compuware DevPartner Performance Analysis Community Edition.) Disponible.

Harold Ekstrom
fuente
0

Puede usar EmbeddedProfiler, es gratis tanto para Linux como para Windwos.

El generador de perfiles es intrusivo (por funcionalidad) pero no requiere ninguna modificación de código. Simplemente agregue un indicador de compilador específico (-finstrument-functios para gcc / MinGW o / GH para MSVC) y vincule la biblioteca del generador de perfiles. Puede proporcionarle un árbol de llamadas completo o simplemente una lista de funciones. Tiene su propio analizador GUI.

Mi-La
fuente