He utilizado dos herramientas de creación de perfiles (VTune en Windows y dbx (dentro de sunstudio) en Solaris) que pueden perfilar el programa sin reconstruirlas, y durante la creación de perfiles, el programa simplemente se ejecuta a la misma velocidad que lo normal. Ambas 2 características me ahorraron mucho tiempo.Cómo perfilar el programa en la plataforma Linux sin reconstruir?
Ahora quiero saber si hay algunas herramientas gratuitas disponibles en la plataforma Linux que pueden hacer lo mismo. Creo que necesito herramientas de creación de perfiles basadas en el muestreo. VTune es bueno pero caro ... He oído hablar de gprof y valgrind. Pero parece que gprof necesita instrumentar el programa (por lo que tenemos que reconstruir el programa) y valgrind ralentizará bastante la ejecución del programa. (desde la introducción de valgrind, Cachegrind ejecuta programas entre 20 y 100 veces más lento que lo normal, y Callgrind, que necesito crear perfiles, está basado en Cachegrind)
Para realizar perfiles, solo necesito averiguar el tiempo de ejecución de las llamadas a funciones, así que puede descubrir dónde ocurre la degradación del rendimiento. En realidad, no necesito mucha información de perfil de bajo nivel como Cachegrind siempre ...
Sí ... Parece lo que necesito ... Pero creo que necesita una cuenta de root para configurar, ¿verdad? – superb
Sí, requiere la instalación de root. O sudo, dependiendo de cómo esté configurado su archivo sudoers. Sugiero usar una máquina virtual, pero hacer perfiles en una VM parece una mala idea: los cuellos de botella cuando se ejecuta bajo una máquina virtual pueden no ser los mismos que cuando se ejecuta en una máquina física. Espero que tengas una raíz en tu sistema. – George
Lo tengo. Después de leer algún documento sobre oprofiler entiendo que necesita kernel para recopilar algún contador de hardware para que pueda perfilar el programa rápidamente, por lo que se necesita un privilegio de root para configurarlo. Puede que no sea fácil obtener acceso a la raíz porque estaba usando una máquina pública y los perfiles afectarán el rendimiento de esa máquina. Creo que Valgrind es la mejor opción ... – superb