Un punto caliente en ciencias de la computación generalmente se define como una región de un programa de computadora donde ocurre una alta proporción de instrucciones ejecutadas o donde se pasa la mayor parte del tiempo durante la ejecución del programa (no necesariamente 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 ejecutará) frecuentemente contiene la dirección de una instrucción dentro de un cierto rango, posiblemente indicando un código que necesita optimización o incluso indicando la existencia. de un bucle de CPU 'estrecho' . Esta sencilla técnica puede detectar instrucciones muy utilizadas, aunque los 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 coherente.
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 'trazo de salto'. Esta era una forma de alterar el lenguaje de máquina de un programa para que cambiara la siguiente instrucción de salto o rama para retener el control, de modo que pudiera ejecutar el programa a una velocidad bastante alta en lugar de interpretar cada instrucción una a la vez y grabar en un archivo. justo donde un programa divergía de la secuencialidad. Al procesar este archivo, podría averiguar dónde pasaba el programa la mayor parte de su tiempo. Así que el primer día que tuvimos este software en ejecución, lo aplicamos a nuestro compilador Fortran suministrado por, supongo que fue en esos días, Control Data Corporation . ¡Descubrimos que pasaba el 87 por ciento de su tiempo leyendo comentarios ! La razón era que se estaba traduciendo de un sistema de código a otro en otro. [1]
Iteración
El ejemplo anterior sirve para ilustrar que la detección eficaz de puntos calientes es a menudo un proceso iterativo y quizás uno que siempre debería llevarse a cabo (en lugar de simplemente aceptar que un programa funciona de manera razonable). Después de eliminar todo el procesamiento extraño (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 haya consumido muchos más recursos de los necesarios, posiblemente durante muchos años en numerosas máquinas, sin que nadie se haya dado cuenta nunca del todo.
Simulación de conjunto de instrucciones como detector de puntos calientes
Se puede usar un simulador de conjunto de instrucciones para contar cada vez que se ejecuta una instrucción en particular y luego producir una visualización en pantalla, una lista impresa del programa (con recuentos y / o porcentajes de la longitud total de la ruta de instrucción ) o un informe separado, mostrando con precisión donde tuvo lugar el mayor número de instrucciones. Esto solo proporciona una vista relativa de los puntos calientes (desde una perspectiva de pasos de instrucción) ya que la mayoría de las instrucciones tienen diferentes tiempos en muchas máquinas. No obstante, proporciona una medida de código muy utilizado y que es bastante útil en sí misma al ajustar un algoritmo.