Un optimizador de código objeto , a veces también conocido como optimizador posterior a la pasada o, para pequeñas secciones de código, optimizador de mirilla , toma la salida de un paso de compilación del lenguaje fuente (el código objeto o archivo binario ) e intenta reemplazar secciones identificables del código. con código de reemplazo que es más eficiente algorítmicamente (generalmente velocidad mejorada).
Ejemplos de
- " IBM Automatic Binary Optimizer para z / OS [1] " (ABO) se introdujo en 2015 como una tecnología de vanguardia diseñada para optimizar el rendimiento de las aplicaciones COBOL en mainframes IBM Z [2] sin la necesidad de volver a compilar el código fuente. Utiliza tecnología de optimización avanzada incluida en el último Enterprise COBOL. [3] ABO optimiza los binarios compilados sin afectar la lógica del programa. Como resultado, la aplicación se ejecuta más rápido pero el comportamiento permanece sin cambios, por lo que el esfuerzo de prueba podría reducirse. Los clientes normalmente no recompilan el 100 por ciento de su código cuando se actualizan a un nuevo compilador o niveles de hardware de IBM Z, por lo que el código que no se recompila no podría aprovechar las características del nuevo hardware de IBM Z. Ahora, con ABO, los clientes tienen una opción más para reducir la utilización de la CPU y los costos operativos de sus aplicaciones COBOL críticas para el negocio. Puede probar ABO con un ABO Trial Cloud Service mejorado y fácil de usar [4] sin instalar ABO en su sistema.
- Capex Corporation desarrolló el primer "Optimizador COBOL" a mediados de la década de 1970 para COBOL . Este tipo de optimizador dependía, en este caso, del conocimiento de las "debilidades" del compilador IBM COBOL estándar, y en realidad reemplazaba (o parcheaba ) secciones del código objeto con código más eficiente. El código de reemplazo podría reemplazar una búsqueda de tabla lineal con una búsqueda binaria, por ejemplo, o algunas veces simplemente reemplazar una instrucción relativamente lenta con una más rápida conocida que de otra manera sería funcionalmente equivalente dentro de su contexto. Esta técnica ahora se conoce como reducción de fuerza . Por ejemplo, en el hardware IBM / 360 , la
CLI
instrucción fue, según el modelo particular, entre dos y cinco veces más rápida que unaCLC
instrucción para comparaciones de un solo byte. [5] [6]
Ventajas
La principal ventaja de volver a optimizar los programas existentes era que el stock de programas del cliente ya compilados ( código objeto ) se podía mejorar casi instantáneamente con un esfuerzo mínimo, reduciendo los recursos de la CPU a un costo fijo (el precio del software propietario ). Una desventaja fue que las nuevas versiones de COBOL, por ejemplo, requerirían un mantenimiento (con cargo) al optimizador para atender los posibles cambios en los algoritmos internos de COBOL. Sin embargo, dado que las nuevas versiones de los compiladores COBOL coincidían con frecuencia con las actualizaciones de hardware , el hardware más rápido normalmente compensaría con creces que los programas de aplicación volvieran a sus versiones optimizadas previamente (hasta que se lanzara un optimizador compatible).
Otros optimizadores
Algunos optimizadores binarios realizan compresión ejecutable , lo que reduce el tamaño de los archivos binarios mediante técnicas genéricas de compresión de datos , lo que reduce los requisitos de almacenamiento y los tiempos de transferencia y carga, pero no mejora el rendimiento en tiempo de ejecución. La consolidación real de módulos de biblioteca duplicados también reduciría los requisitos de memoria.
Algunos optimizadores binarios utilizan métricas en tiempo de ejecución ( creación de perfiles ) para mejorar introspectivamente el rendimiento mediante técnicas similares a los compiladores JIT .
Desarrollos recientes
Los 'optimizadores binarios' desarrollados más recientemente para varias plataformas, algunos de los cuales afirman ser novedosos pero, sin embargo, esencialmente utilizan las mismas (o similares) técnicas descritas anteriormente, incluyen:
- IBM Automatic Binary Optimizer para z / OS (ABO) (2015) [7]
- IBM Automatic Binary Optimizer para z / OS (ABO) Trial Cloud Service (2020) [8]
- Optimizador de código binario de Sun Studio [9] , que requiere una fase de perfil de antemano
- Diseño e ingeniería de un optimizador binario dinámico - de IBM TJ Watson Res. Centro (febrero de 2005) [10] [11]
- QuaC: Optimización binaria para la generación rápida de código en tiempo de ejecución en C [12] - (que parece incluir algunos elementos de JIT)
- DynamoRIO
- COBRA: un marco de optimización binario en tiempo de ejecución adaptable para aplicaciones multiproceso [13]
- Optimizador ejecutable de Spike (kernel Unix) [14]
- Optimización de software "SOLAR" en tiempo de enlace y tiempo de ejecución
- Dynimize: virtualización del rendimiento de la CPU [15]
Ver también
- Recopilación binaria
- Traducción binaria
- Eliminación dinámica de códigos muertos
Referencias
- ^ https://www.ibm.com/products/automatic-binary-optimizer-zos
- ^ https://www.ibm.com/it-infrastructure/z
- ^ https://www.ibm.com/us-en/marketplace/ibm-cobol
- ^ https://optimizer.ibm.com
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 11 de julio de 2010 . Consultado el 7 de enero de 2010 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ http://portal.acm.org/citation.cfm?id=358732&dl=GUIDE&dl=ACM
- ^ https://www.ibm.com/products/automatic-binary-optimizer-zos
- ^ https://optimizer.ibm.com
- ^ http://developers.sun.com/solaris/articles/binopt.html
- ^ Duesterwald, E. (2005). "Diseño e Ingeniería de un Optimizador Binario Dinámico". Actas del IEEE . 93 (2): 436–448. doi : 10.1109 / JPROC.2004.840302 .
- ^ http://portal.acm.org/citation.cfm?id=1254810.1254831
- ^ http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/CSD-94-792.pdf
- ^ Kim, Jinpyo; Hsu, Wei-Chung; Yew, Pen-Chung (2007). "COBRA: un marco de optimización binaria de tiempo de ejecución adaptable para aplicaciones multiproceso". 2007 Conferencia internacional sobre procesamiento paralelo (ICPP 2007) . pag. 25. doi : 10.1109 / ICPP.2007.23 . ISBN 978-0-7695-2933-2.
- ^ http://www.cesr.ncsu.edu/fddo4/papers/spike_fddo4.pdf
- ^ https://dynimize.com/product