Pregunta

Hay muchas herramientas de instrumentación estáticas y dinámicas. El hollín es una herramienta estática para la instrumentación de código de bytes de Java. Pin y Valgrind son herramientas de instrumentación dinámica para los binarios.

¿Qué son los pros y los contras de las herramientas de instrumentación estáticas y dinámicas? Creo que las herramientas de instrumentación estáticas son mejores en términos de rendimiento en tiempo de ejecución, mientras que las herramientas dinámicas son más poderosos. Por favor compararlos en términos de capacidad y rendimiento.

Además, ¿cuál es la diferencia usando herramientas de instrumentación de la escritura pasan LLVM?

¿Fue útil?

Solución

Estoy asumiendo la necesidad es descubrir el código que lleva mucho tiempo y que se puede optimizar para salvar ese momento. Ese es un objetivo diferente de rutinas acaba de temporización.

Soy escéptico de analizadores estáticos porque todo depende de la combinación de datos de entrada.

instrumentación dinámico trata de medir propiedades de las funciones, tales como: tiempo de auto y el tiempo total, absoluta, la media, y por ciento. llamar también cuenta, y el papel de cada rutina en el gráfico de llamadas.

instrumentación dinámica (a la gprof ) tiene Ha sido el estándar de facto desde hace décadas, pero es muy lejos de ser la última palabra. Por un lado, es importante darse cuenta de que la mayor parte de las estadísticas que da se echa en falta el punto en términos de su necesidad original.

En estos días (en mi humilde opinión) que necesita un generador de perfiles de muestreo que las muestras de la pila de llamadas, no sólo el contador de programa. Debe probar el tiempo de reloj de pared, no sólo el tiempo de CPU. Las muestras no necesitan ser atraídos a alta frecuencia. Se debe suprimir de muestreo cuando la aplicación está esperando la entrada del usuario. Se le debe dar la información a nivel de línea o instrucción, no sólo el nivel de función. La estadística más importante que debe darle una línea de código es el porcentaje de muestras que lo contienen, porque esa es la medida más directa de las veces que se puede ahorrar si se optimiza esa línea.

Unos perfiladores pueden hacer esto, Oprofile y RotateRight / Zoom en particular.

Otros consejos

Los pros de instrumentación estática es el hecho de que el análisis no es dependiente de la entrada. El análisis que sucede en el código original e incluye todos los caminos del código. Cobertura completa. Este tipo de instrumentación por lo general vuelve a escribir el binario que está listo para su ejecución sin la necesidad de otro proceso en tiempo de ejecución. Eso también significa que el código se ejecutará rápido, con la única cabeza que llega del código inyectado. El inconveniente de la instrumentación estática es el análisis no se detalla que es causada debido a la falta de información de tiempo de ejecución y debido a eso, a veces es muy difícil de lograr sus objetivos.

Por otro lado, la instrumentación dinámica Qué incluye todos los detalles y la información durante el tiempo de ejecución del código. En la mayoría de los casos, las herramientas que realizan la instrumentación dinámica son fáciles de escribir. Por otra parte, no es capaz de lograr una cobertura completa de códigos debido al hecho de que la ruta de ejecución depende de las entradas dadas. También el hecho de que hay una necesidad de un proceso externo que se adjunta y el instrumento de la original hace las cosas más lenta.

AFAIC, pases llvm se utilizan para la instrumentación estática, debido a que el código generado es en tiempo de compilación y ya está escrito en el binario final y seguro que incluye todos los pros y los contras de técnicas de instrumentación estáticas.

Para concluir, es una cuestión de lo que necesita. Debe elegir la herramienta adecuada para su trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top