2008-09-10 17 views
18

Necesito mostrar la información de generación de perfiles extraída de una CPU profundamente integrada, presentándola de manera que otros desarrolladores de mi equipo puedan actuar. Los datos de creación de perfiles son una instantánea de un contador de ciclos a la entrada y salida de cada función, por lo que tenemos un gráfico de llamadas anotado con precisión de temporización de sub-microsegundos. Prefiero no solo eliminar los nombres de funciones y el tiempo como gprof, estoy buscando algo más fácil de entender y de actuar.herramientas de visualización de perfiles?

¿Alguien ha trabajado con una herramienta de creación de perfiles particularmente buena (en cualquier plataforma), lo que facilita la identificación de áreas del código para perforar? Estoy buscando un ejemplo inspirador para seguir sobre cómo mostrar el gráfico de llamadas, pero si hay una buena herramienta con un formato de entrada, puedo dar masajes a mis datos para usarlos. Podría usar Windows, Linux o MacOS X para ejecutar la herramienta de visualización.

Un artículo de perfil en IBM DeveloperWorks me llevó a GraphViz, con un ejemplo profiling en su sitio. Salvo otra sugerencia aquí, usaré GraphViz e imitaré su ejemplo de creación de perfiles.

Respuesta

2

Le sugiero que suelte gprof + graphviz para OProfileUI, a menos que no tenga otra opción.

2

IE 8b2 ofrece un simple display del árbol de llamadas para javascript que creo que es mucho más útil que el gráfico GraphViz.

El gráfico GraphViz es maravilloso para visualizar el árbol de llamadas, pero hace que sea muy difícil visualizar los problemas de tiempo (en mi humilde opinión, los datos más importantes).

** Editar: Pensé que vale la pena señalar que todas las herramientas sugeridas usan un árbol basado en la cuadrícula para visualizar el árbol de llamadas. Esto le permite ver la estructura de llamadas sin restar importancia a los datos de temporización, ya que creo que lo hace con el gráfico GraphViz. *

1

JetBrains dotTrace (tiene una demostración de prueba con la que puede jugar). Organiza las pilas de llamadas y puede encontrar fácilmente los lugares problemáticos. Tiene muchas capacidades de filtrado también. Muy fácil de navegar y encontrar lo que estás buscando.

3

¿Qué tal "GTKWave"? Pero debe insertar la sonda en su código.

+0

Idea interesante, @XC. - ¿GTKWave no visualiza archivos [VCD] (http://en.wikipedia.org/wiki/Value_change_dump)? He usado 'gdb' con el simulador [simulavrxx] (http://www.nongnu.org/simulavr/usage.html), pero el simulador genera el volcado de VCD para GTKWave ... ¿Cómo se puede obtener un volcado de VCD? para un programa C 'localmente en marcha' o un script Perl? – sdaau

17

Otra buena herramienta para visualizar datos de perfiles es gprof2dot.py python script. Se puede utilizar para visualizar varios formatos diferentes: "Este es un script de Python para convertir los resultados de prof, gprof, oprofile, Shark, AQtime y python en un gráfico de puntos". Esto es lo que mira la salida como:

http://jrfonseca.googlecode.com/svn/wiki/gprof2dot_small.png

+0

¡Esta es una excelente herramienta de visualización! –

+0

¿Hay alguna manera de admitir python3.2? –

3

Valgrind hace perfilado (y más), y hay GUIs para la visualización.

+4

Kcachegrind es uno de los más populares. –

2

Puede usar Senseo, un complemento para Eclipse. Le muestra el rendimiento, la asignación de memoria, los objetos creados, el tiempo invertido, los métodos reales invocados, pase el ratón sobre firmas de métodos o llamadas, árbol de contexto de llamadas, explorador de paquetes y más.

0

He escrito una herramienta de visualización basada en navegador, profile_eye, que opera en la salida de gprof2dot.

gprof2dot es ideal para generar muchas salidas de herramientas de perfilado, y hace un gran trabajo en la colocación de elementos gráficos. La representación final es un gráfico estático, que a menudo es muy abarrotado.

Usando d3.js es posible eliminar gran parte de ese desorden, a través del desvanecimiento relativo de elementos desenfocados, información sobre herramientas, y un fisheye distortion.

Para la comparación, vea profile_eye's visualization del canonical example used by gprof2dot.

Cuestiones relacionadas