stringtranslate.com

Punto caliente (programación informática)

Un punto caliente en informática se define generalmente como una región de un programa informático donde se produce una gran proporción de instrucciones ejecutadas o donde se pasa la mayor parte del tiempo durante la ejecución del programa (no necesariamente es lo mismo, ya que algunas instrucciones son más rápidas que otras).

Si un programa se interrumpe aleatoriamente, el contador del programa (el puntero a la siguiente instrucción que se va a ejecutar) suele contener la dirección de una instrucción dentro de un cierto rango, lo que posiblemente indique que hay código que necesita optimización o incluso que existe un bucle de CPU "estrecho" . Esta sencilla técnica puede detectar instrucciones muy utilizadas, aunque métodos más sofisticados, como los simuladores de conjuntos de instrucciones o los analizadores de rendimiento , lo consiguen de forma más precisa y consistente.

Historia de la detección de puntos calientes

El científico informático Donald Knuth describió su primer encuentro con lo que él llama un rastro de salto en una entrevista para el Dr. Dobb's Journal en 1996, diciendo:

En los años 60, alguien inventó el concepto de "seguimiento de salto". Se trataba de una forma de alterar el lenguaje de máquina de un programa para que cambiara la siguiente instrucción de salto o rama y conservara el control, de modo que se pudiera ejecutar el programa a una velocidad bastante alta en lugar de interpretar cada instrucción una a la vez y registrar en un archivo exactamente dónde un programa se desviaba de la secuencialidad. Al procesar este archivo se podía averiguar dónde pasaba la mayor parte del tiempo el programa. Así que el primer día que tuvimos este software en funcionamiento, lo aplicamos a nuestro compilador Fortran suministrado por, supongo que en aquella época, Control Data Corporation . ¡Descubrimos que pasaba el 87 por ciento de su tiempo leyendo comentarios ! La razón era que estaba traduciendo de un sistema de código a otro y de ahí a otro. [1]

Iteración

El ejemplo anterior sirve para ilustrar que la detección eficaz de puntos calientes suele ser un proceso iterativo y tal vez uno que siempre debería llevarse a cabo (en lugar de simplemente aceptar que un programa funciona razonablemente bien). Después de eliminar todo el procesamiento superfluo (simplemente eliminando todos los comentarios incrustados, por ejemplo), un nuevo análisis en tiempo de ejecución detectaría con mayor precisión los puntos calientes "genuinos" en la traducción. Si no se hubiera producido ninguna detección de puntos calientes, es posible que el programa hubiera consumido muchos más recursos de los necesarios, posiblemente durante muchos años en numerosas máquinas, sin que nadie fuera plenamente consciente de ello.

Simulación de un conjunto de instrucciones como detector de puntos calientes

Un simulador de conjunto de instrucciones se puede utilizar para contar cada vez que se ejecuta una instrucción en particular y luego producir una visualización en pantalla, un listado de programas impresos (con recuentos y/o porcentajes de la longitud total de la ruta de instrucciones ) o un informe separado, que muestra con precisión dónde tuvo lugar la mayor cantidad de instrucciones. Esto solo proporciona una vista relativa de los puntos críticos (desde una perspectiva de paso de instrucción) ya que la mayoría de las instrucciones tienen diferentes tiempos en muchas máquinas. Sin embargo, proporciona una medida del código altamente utilizado y que es bastante útil en sí misma al ajustar un algoritmo.

Véase también

Referencias

  1. ^ Jack Woehr: Una entrevista con Donald Knuth, abril de 1996.