Optimización interprocedimiento mediante sustitución en línea

Los diferentes alcances de la optimización del código incluyen la optimización local, la optimización regional, la optimización global y la optimización entre procedimientos. 

La optimización local se refiere a la optimización en un bloque básico. La Optimización Regional se refiere a la optimización en un Bloque Básico Extendido. La optimización global se refiere a la optimización de un procedimiento completo. La optimización entre procedimientos se refiere a la optimización de programas completos que incluyen diferentes procedimientos. El término interprocesal significa entre diferentes procedimientos mientras que el término intraprocesal significa dentro de un solo procedimiento. La optimización global es la optimización intraprocedimiento. El programa generalmente se divide en varios procedimientos para facilitar nuestro trabajo de análisis, depuración, etc. Pero dividir un programa en múltiples procedimientos tiene su propio conjunto de ventajas y desventajas.

Las ventajas y desventajas de dividir un programa en múltiples procedimientos son las siguientes:

ventajas : 

  1. Limita la cantidad de código que el compilador considera en un momento determinado. 
  2. Esto da como resultado que las estructuras de datos en tiempo de compilación se mantengan pequeñas y se limite el costo de varios algoritmos en tiempo de compilación.

Desventajas: 

  1. No permite que el compilador entienda lo que sucede dentro de una llamada. 
  2. Requiere saltos frecuentes.

Cada llamada incluye la ejecución de una secuencia previa a la llamada y una secuencia posterior al retorno en la persona que llama y una secuencia de prólogo y una secuencia de epílogo en la persona que llama. Estas operaciones toman una cantidad considerable de tiempo para su implementación. Incluye transiciones entre las secuencias. Esto constituye la sobrecarga. Esto afecta el conocimiento en tiempo de compilación y las acciones en tiempo de ejecución. Estos problemas no pueden abordarse mediante la optimización intraprocedimiento, ya que se limita a un solo procedimiento. Para reducir las ineficiencias que introducen los procedimientos separados, el compilador puede analizar y transformar varios procedimientos juntos. La optimización interprocedimiento ayuda a lograr esto.

La optimización interprocedimiento se puede realizar mediante el uso de dos técnicas: 

  1. Sustitución en línea 
  2. Colocación del procedimiento

Para optimizar todo el programa, el compilador debe tener acceso al código que se está analizando y transformando. La optimización de todo el programa también tiene implicaciones para la estructura del compilador.

Sustitución en línea:  

Hay varias acciones de tiempo de ejecución que forman parte de la sobrecarga al implementar la llamada al procedimiento. Los ejemplos son transferir el control de la persona que llama a la persona que llama y viceversa, devolver valores de la persona que llama a la persona que llama, etc. El compilador puede mejorar la eficiencia al reemplazar el sitio de la llamada con una copia del cuerpo de la persona que llama. Esto se conoce como sustitución en línea . Ayuda a permitir que el compilador evite la mayor parte del código de vinculación de procedimientos. También resulta en la alteración del gráfico de llamadas del programa.

Tiene dos subproblemas: 

  1. Procedimiento de decisión 
  2. Transformación real

Procedimiento de decisión: 

Se trata de elegir los sitios de llamada que se van a colocar en línea. Elegir los sitios de llamada en línea es una tarea muy compleja. Implica mucho análisis y consideraciones. El compilador debe considerar las características de la persona que llama, la persona que llama y el sitio. La inserción puede resultar en un aumento en el tamaño del código y el tamaño del espacio de nombres y también aumenta la demanda de registros. La decisión tomada en un sitio de llamada afecta la decisión tomada en los otros sitios de llamada.

Criterios para el Procedimiento de Decisión: 

Los criterios que se consideran para el Procedimiento de Decisión son: 

  • Tamaño del destinatario: si el tamaño del destinatario es comparativamente más pequeño que el tamaño del código de vinculación del procedimiento, que incluye la prellamada, la devolución posterior, el prólogo y el epílogo, la incorporación del destinatario debería reducir el tamaño del código. También debe garantizar que se ejecuten menos operaciones.
  • Tamaño de la persona que llama: para contrarrestar el aumento del tiempo del compilador y la disminución de la eficacia de la optimización, el compilador puede limitar el tamaño general del procedimiento.
  • Recuento dinámico de llamadas: incorporar un sitio de llamada ejecutado con frecuencia proporciona más beneficios que incorporar un sitio de llamada ejecutado con menos frecuencia.
  • Recuento estático de llamadas: Significa el número de sitios distintos que llaman a un procedimiento. Los compiladores toman nota de este recuento.
  • Recuento de parámetros: Desempeñan un papel en la determinación del costo de la vinculación del procedimiento.
  • Parámetros reales de valor constante: Tiene un impacto si los valores constantes se pasan como parámetros reales. Ayuda al permitir la operación de plegado constante.
  • Llamadas en el procedimiento: el seguimiento del número de llamadas en un procedimiento ayuda a encontrar las hojas en el gráfico de llamadas que siempre son buenas para insertar.
  • Profundidad de anidamiento de bucles: los sitios de llamadas dentro de los bucles se ejecutan con más frecuencia que los sitios de llamadas fuera del bucle.
  • Fracción del tiempo de ejecución: A partir de los datos del perfil, se calcula. Ayuda a evitar que el compilador inserte los procedimientos que no pueden tener un efecto importante en el rendimiento.

Transformación real: 

Implica reescribir el sitio de la llamada con el cuerpo de la persona a la que se llama. El compilador reescribe un sitio de llamada con el cuerpo de la persona a la que se llama. El compilador también realiza modificaciones para modelar los efectos del enlace de parámetros.

Publicación traducida automáticamente

Artículo escrito por patibandalp01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *