En informática , la predicción del rendimiento significa estimar el tiempo de ejecución u otros factores de rendimiento (como errores de caché ) de un programa en una computadora determinada. Los arquitectos informáticos la utilizan ampliamente para evaluar nuevos diseños de computadoras, los desarrolladores de compiladores para explorar nuevas optimizaciones y también para que los desarrolladores avanzados ajusten sus programas.
Existen muchos métodos para predecir el rendimiento de los programas en las computadoras. Se pueden dividir en tres categorías principales:
Los datos de rendimiento se pueden obtener directamente de simuladores de computadora , dentro de los cuales cada instrucción del programa de destino se ejecuta dinámicamente dado un conjunto de datos de entrada particular. Los simuladores pueden predecir el rendimiento del programa con mucha precisión, pero requieren un tiempo considerable para manejar programas grandes. Algunos ejemplos incluyen los simuladores PACE [1] y Wisconsin Wind Tunnel [2] , así como el más reciente kit de herramientas de simulación WARPP [3] , que intenta reducir significativamente el tiempo necesario para la simulación de sistemas paralelos.
Otro enfoque, basado en la simulación basada en trazas, no ejecuta todas las instrucciones, sino que ejecuta un archivo de trazas que almacena únicamente los eventos importantes del programa. Este enfoque pierde cierta flexibilidad y precisión en comparación con la simulación precisa de ciclos mencionada anteriormente, pero puede ser mucho más rápido. La generación de trazas a menudo consume cantidades considerables de espacio de almacenamiento y puede afectar gravemente el tiempo de ejecución de las aplicaciones si se registra una gran cantidad de datos durante la ejecución.
El enfoque clásico de predicción del rendimiento considera un programa como un conjunto de bloques básicos conectados por una ruta de ejecución. Por lo tanto, el tiempo de ejecución de todo el programa es la suma del tiempo de ejecución de cada bloque básico multiplicado por su frecuencia de ejecución, como se muestra en la siguiente fórmula:
Las frecuencias de ejecución de los bloques básicos se generan a partir de un perfilador , por lo que este método se denomina predicción basada en perfiles. El tiempo de ejecución de un bloque básico se obtiene normalmente a partir de un simple planificador de instrucciones.
La predicción clásica basada en perfiles funcionó bien para los primeros procesadores de ejecución en orden y con una sola emisión, pero no logra predecir con precisión el rendimiento de los procesadores modernos. La razón principal es que los procesadores modernos pueden emitir y ejecutar varias instrucciones al mismo tiempo, a veces fuera del orden original y cruzando el límite de los bloques básicos.