Respuesta corta:
La evaluación parcial puede optimizar el programa, pero ciertamente no puede vencer la ley de Moore o su intuición.
Respuesta larga:
En teoría, la evaluación parcial es una idea en la que podemos evaluar previamente partes del programa para hacerlo más rápido sin cambiar su comportamiento general. En la práctica, esta idea se utiliza de diversas maneras en diversos contextos con diversos efectos.
Si bien la precompilación o la preevaluación de partes del código pueden mejorar el rendimiento del programa, las ganancias serán pequeñas si las partes del programa que se están compilando no están activas. Dado que es increíblemente difícil / imposible saber qué partes del código estarán activas en tiempo de ejecución, las personas usan JITing para mitigar esto. La compilación JIT funciona bien para programas de larga ejecución como máquinas virtuales Java.
- ¿Cuál es el estado del arte en los sistemas de recomendación?
- ¿En qué problemas están trabajando actualmente los investigadores?
- Tienes una semana para completar un proyecto que está en un lenguaje de programación y un concepto que no conoces bien. ¿Cuál será su plan para ese proyecto?
- ¿Cuál es un problema o problema interesante relacionado con los lenguajes de script para un proyecto en mi curso de diseño de lenguaje de programación?
- Cómo aprender las habilidades de investigación necesarias para producir investigación rigurosa en robótica, visión por computadora o aprendizaje automático
A veces, las partes que pueden ser evaluadas previamente son obvias. En tales casos, los programas se pueden optimizar durante la fase de diseño en sí. Por ejemplo, el analizador de espíritu utiliza inteligentemente la metaprogramación de plantillas de C ++ para generar previamente el analizador en la fase de compilación. Otros DSL también pueden hacer que la evaluación parcial sea redundante.
Si bien la evaluación parcial puede sonar bien en papel y puede funcionar bien en algunos casos, no se puede aplicar en la mayoría de los casos en los que puede parecer un buen lugar para aplicarla. En la práctica, es difícil hacerlo automáticamente debido a 2 razones
- Puede haber información incompleta para optimizar realmente el programa automáticamente.
- También es realmente difícil juzgar qué es un programa correcto pero con mejor desempeño en presencia de bloqueos, múltiples hilos y múltiples procesos.
Incluso en casos simples donde la evaluación parcial es simple de aplicar, puede afectar el rendimiento. Por ejemplo, la compilación previa puede causar errores de caché y alineaciones incorrectas de líneas de caché que pueden obstaculizar el rendimiento en lugar de mejorarlo.
Incluso después de todas estas optimizaciones, las ganancias de rendimiento obtenidas se verán eclipsadas por los beneficios obtenidos de los medios arquitectónicos o algorítmicos o la ley de Moore.