stringtranslate.com

Optimizador de código de objeto

Un optimizador binario toma la salida existente de un compilador y produce un mejor archivo de ejecución con la misma funcionalidad.

Un optimizador de código objeto , a veces también conocido como optimizador de post-paso o, para pequeñas secciones de código, optimizador de mirilla , forma parte de un compilador de software . Toma la salida del 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 sea más eficiente algorítmicamente (generalmente, mejore la velocidad).

Ejemplos

Ventajas

La principal ventaja de volver a optimizar los programas existentes era que el stock de programas de cliente ya compilados ( código objeto ) podía mejorarse casi instantáneamente con un esfuerzo mínimo, reduciendo los recursos de CPU a un costo fijo (el precio del software propietario ). Una desventaja era que las nuevas versiones de COBOL, por ejemplo, requerirían un mantenimiento (pagado) al optimizador para atender posibles cambios en los algoritmos COBOL internos. Sin embargo, dado que las nuevas versiones de los compiladores COBOL coincidían con frecuencia con actualizaciones de hardware , el hardware más rápido normalmente compensaba con creces el hecho de que los programas de aplicación volvieran a sus versiones preoptimizadas (hasta que se lanzara un optimizador compatible).

Otros optimizadores

Algunos optimizadores binarios realizan compresión de archivos ejecutables , lo que reduce el tamaño de los archivos binarios mediante técnicas de compresión de datos genéricas , 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 de tiempo de ejecución ( creación de perfiles ) para mejorar introspectivamente el rendimiento utilizando técnicas similares a los compiladores JIT .

Acontecimientos recientes

Los "optimizadores binarios" desarrollados más recientemente para varias plataformas, algunos de los cuales afirman ser novedosos pero, sin embargo, utilizan esencialmente las mismas técnicas (o similares) descritas anteriormente, incluyen:

Véase también

Referencias

  1. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 2010-07-11 . Consultado el 2010-01-07 .{{cite web}}: CS1 maint: copia archivada como título ( enlace )
  2. ^ Evans, Michael (1982-12-01). "Ingeniería de software para el entorno Cobol". Comunicaciones de la ACM . 25 (12): 874–882. ​​doi : 10.1145/358728.358732 . S2CID  17268690. Archivado desde el original el 2021-10-27 . Consultado el 2021-10-27 .
  3. ^ "IBM Automatic Binary Optimizer for z/OS - Overview" (Optimizador binario automático de IBM para z/OS: descripción general). www.ibm.com . 2015. Archivado desde el original el 18 de octubre de 2020. Consultado el 15 de mayo de 2020 .
  4. ^ "Servicio de nube de prueba IBM Automatic Binary Optimizer for z/OS". optimized.ibm.com . 2020. Archivado desde el original el 19 de enero de 2021 . Consultado el 27 de octubre de 2021 .
  5. ^ "El optimizador de código binario". Archivado desde el original el 22 de julio de 2010. Consultado el 7 de enero de 2010 .
  6. ^ 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. S2CID  2217101.
  7. ^ Xu, Chaohao; Li, Jianhui; Bao, Tao; Wang, Yun; Huang, Bo (13 de junio de 2007). "Optimizaciones de memoria impulsadas por metadatos en traductores binarios dinámicos". Actas de la 3.ª conferencia internacional sobre entornos de ejecución virtual - VEE '07 . Association for Computing Machinery. págs. 148-157. doi :10.1145/1254810.1254831. ISBN 978-1-59593630-1. S2CID  15234434. Archivado desde el original el 27 de octubre de 2021. Consultado el 27 de octubre de 2021 a través de ACM Digital Library.
  8. ^ "Copia archivada" (PDF) . Archivado (PDF) desde el original el 19 de abril de 2009 . Consultado el 7 de enero de 2010 .{{cite web}}: CS1 maint: copia archivada como título ( enlace )
  9. ^ Kim, Jinpyo; Hsu, Wei-Chung; Yew, Pen-Chung (2007). "COBRA: Un marco de optimización binaria en tiempo de ejecución adaptativo para aplicaciones multiproceso". Conferencia internacional sobre procesamiento paralelo de 2007 (ICPP 2007) . pág. 25. doi :10.1109/ICPP.2007.23. ISBN 978-0-7695-2933-2.S2CID15079211  .​
  10. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 11 de septiembre de 2010. Consultado el 7 de enero de 2010 .{{cite web}}: CS1 maint: copia archivada como título ( enlace )
  11. ^ "Optimización del software "SOLAR" en tiempo de enlace y tiempo de ejecución". Archivado desde el original el 14 de febrero de 2016.
  12. ^ "Descripción general del producto Dynimize". dynimize.com . Archivado desde el original el 2021-10-25 . Consultado el 2021-04-26 .
  13. ^ Panchenko, Maksim; Auler, Rafael; Nell, Bill; Ottoni, Guilherme (16 de febrero de 2019). "BOLT: un optimizador binario práctico para centros de datos y más allá". Simposio internacional IEEE/ACM de 2019 sobre generación y optimización de código (CGO) . págs. 2–14. arXiv : 1807.06735 . doi :10.1109/CGO.2019.8661201. ISBN . 978-1-7281-1436-1.S2CID 49869552  .