it-swarm-es.com

¿Cuál es el mejor generador de perfiles de C++ gratuito para Windows?

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

216
ugasoft

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

130
yrp

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).

59
lsalamon

Proffy es bastante bueno: http://pauldoo.com/proffy/

Descargo de responsabilidad: escribí esto.

34
pauldoo

Hay un perfilador de instrumentación (función precisa) para MS VC 7.1 y superior llamado MicroProfiler. Puede obtenerlo aquí (x64) o aquí (x86) . Es no requiere modificaciones o adiciones a su código y puede mostrar estadísticas de función con las personas que llaman y las personas que llaman 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 habilitar/deshabilitar fácilmente la creación de perfiles para un proyecto. También es posible instalarlo en la máquina limpia, solo necesita que la información del símbolo se encuentre junto con el ejecutable que se está perfilando.

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

La comparación aproximada muestra que vence a AQTime (cuando se invoca en instrumentación, ejecución a nivel de función). El siguiente programa (optimización completa, inline deshabilitado) se ejecuta tres veces más rápido con los resultados del micro-perfilador 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());
}
16
Arty

Microsoft tiene el Windows Performance Toolkit .

Requiere Windows Vista, Windows Server 2008 , o Windows 7.

10
epotter

Una nueva adición es Shiny .

Al aire libre

7
Buggieboy

Recomiendo altamente Windows Performance Toolkit (WPT) oXPERF

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 mediante la herramienta GUI xperfview.

El uso de el argumento de la línea de comando de stacktrace ha demostrado ser una herramienta invaluable para mi empresa, ya que perfila y resuelve 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 exactos y las estadísticas proporcionadas en los registros de ETW no tienen paralelo en detalle, excepto el analizador de visual studio (2010/2012), que también es excelente, pero no AFAIK gratuito.

Si nunca has usado xperf ... no sabes lo que te estás perdiendo

5
MW_dev

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

3
dudico

Por favor, intente mi perfil, 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 una pieza de código.

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

Requiere la biblioteca Boost.

2
ravenspoint

Utilicé Luke Stackwalker e hice el trabajo para mi proyecto de Visual Studio.

Otros proyectos interesantes son:

1
INS

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

0
Harold Ekstrom

Puedes 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. Solo agregue un indicador de compilador específico (-finstrument-functios para gcc/MinGW o/GH para MSVC) y vincule la biblioteca del perfilador. Puede proporcionarle un árbol de llamadas completo o simplemente una lista de funciones. Tiene su propio analizador GUI.

0
Mi-La