2008-09-15 15 views
200

Estoy buscando un generador de perfiles para encontrar el cuello de botella en mi código C++. Me gustaría encontrar una herramienta de creación de perfiles 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.¿Cuál es el mejor generador de perfiles gratis de C++ para Windows?

Respuesta

124

CodeXL ha reemplazado a End Of Line'd AMD Code Analyst y ambos son gratuitos, pero no tan avanzados como VTune. También está Sleepy, que es muy simple, pero funciona en muchos casos.

+4

Aquí está el enlace para CodeAnalyst: http://developer.amd.com/CPU/CODEANALYST/Pages/default. aspx – epotter

+1

Intenté trabajar con él ahora, y no me gustó para nada. Ni siquiera podía entender cómo obtener el% de tiempo total de la función (incluidas las calles) que TrueTime podía hacer bien hace 10 años. –

+0

Escribí una adaptación de sleepy que no depende de wxWidgets pero se ejecuta en la línea de comandos. Lo ejecuta durante un período de tiempo frente a un proceso en ejecución y luego, cuando lo detiene, obtiene las estadísticas de lo que el proceso estaba haciendo. No es intrusivo en el sentido de que no tiene que modificar el código de ninguna manera para usarlo, pero sí suspende sus subprocesos a medida que lee las pilas de llamadas. También necesita los archivos pdb disponibles para que pueda obtener resultados significativos, pero creo que eso se aplica a cualquier generador de perfiles. – CashCow

1

he utilizado "TrueTime -.. Parte de la suite DevPartner de Compuware durante años Hay una [versión libre] (. Podría intentar Compuware DevPartner Rendimiento Comunidad Análisis Edición) disponibles

3

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

+0

Solo esta herramienta me ayudó a crear un perfil compilado en modo de lanzamiento de aplicación web mixta (administrada y nativa) en IIS. – Monsignor

+0

Es desafortunado que no sean compatibles con las personas que intentan evaluar su producto. –

+0

Actualmente están ofreciendo una versión de prueba de 14 días con funcionalidad limitada. – Max

10

Microsoft tiene la Windows Performance Toolkit.

Se requiere de Windows Vista  , Windows Server 2008 o Windows   7.

+2

No es gratis :( –

+4

¿Cómo es gratis? Es parte del SDK de Windows. Pude descargarlo sin ningún problema. (Es cierto que tenemos una suscripción a MSDN, por lo que algunas personas podrían tener una experiencia diferente que yo.) – epotter

+1

Gratis o no, el enlace ya no funciona correctamente –

0

utilizo VSPerfMon que es la versión independiente de Visual Studio Profiler. Escribí una herramienta de GUI para ayudarme a ejecutarlo y mirar los resultados.

http://code.google.com/p/vsptree/

7

Una nueva adición es Shiny.

+3

No se pueden encontrar los archivos binarios descargables, solo los códigos fuente. No es muy conveniente – Monsignor

57

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

+19

googletest es un framework de pruebas unitarias. ¿Cómo usarías eso para realizar el perfil? – greatwolf

+0

Si está usando un binario de Windows de la pila gcc, esta es una gran opción: AMD CodeAnalyst no reconoce los símbolos de gcc en Windows, pero tiene mucho sueño! – Mike

2

Por favor, pruebe mi generador de perfiles, llamado cRunWatch. Solo se trata de 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.

14

Hay un perfilador de instrumentación (función-precisa) para MS VC 7.1 y superior llamado MicroProfiler. You can get it here (x64) o here (x86). Es no requiere ninguna modificación o adiciones a su código y es capaz de mostrar estadísticas de la función con llamantes y llamadas en 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 activar/desactivar 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 perfilado.

Esta herramienta es útil cuando la aproximación estadística de los perfiles 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, inlining discapacitados) se ejecuta tres veces más rápido con micro-de perfil que muestra los resultados en tiempo real, que con AQTime simplemente estadísticas que recogen:

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()); 
} 
+0

Es fácil de usar y tiene un perfil muy rápido. Solo un problema No resolví, es un problema que después de que terminé la depuración, la ventana del generador de perfiles no se cerró automáticamente y tienes que eliminarla a través del administrador de tareas (sin eso no puedes recompilar tu proyecto). –

+0

Descubrí que después de cerrar mi aplicación con el botón CERRAR normal, la ventana del generador de perfiles también puede cerrarse regularmente. Pero cuando salgo de la aplicación mediante el acceso directo MAYÚS + F5 (comando Detener depuración VS), el botón de cerrar la ventana del perfilador está desactivado. –

+0

No funciona con VS 2015. – rustyx

0

Puede utilizar EmbeddedProfiler, es gratis para Linux y 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 útiles. Tiene su propia GUI de analizador.

5

I recomiendan altamente Windows Performance Toolkit (WPT) o Xperf

la línea de comandos registros de línea de comando herramienta xperf seguimiento de eventos para los registros de Windows (ETW) que pueden ser analizados usando la herramienta de interfaz gráfica de usuario xperfview.

El uso de stacktrace command line arguement ha demostrado ser una herramienta invaluable para mi empresa, ya que los perfiles y la solución de problemas de 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 a xperf a un nivel aún mayor.

Los números duros y las estadísticas proporcionadas en los registros de ETW son incomparables en detalle a excepción de Visual Studio Profiler (2010/2012) que también es genial pero no libre AFAIK.

Si usted nunca ha utilizado xperf ... no sabes lo que te falta

+0

Bueno, sé que me falta la URL activa del sitio. –

Cuestiones relacionadas