Eliminación de subexpresiones comunes: técnica de optimización de código en el diseño del compilador

La técnica de optimización de código es un enfoque para mejorar el rendimiento del código eliminando o reorganizando las líneas de código. Las técnicas de optimización de código son las siguientes:

  1.  Evaluación en tiempo de compilación
  2.  Eliminación de subexpresiones comunes
  3.  Eliminación de código muerto
  4.  Movimiento de código
  5.  Reducción de fuerza

Eliminación de subexpresiones comunes:

La expresión o subexpresión que ha aparecido y calculado antes y vuelve a aparecer durante el cálculo del código es la subexpresión común. La eliminación de esa subexpresión se conoce como eliminación de subexpresión común.

La ventaja de este método de eliminación es que hace que el cálculo sea más rápido y mejor al evitar volver a calcular la expresión. Además, utiliza la memoria de manera eficiente.

Tipos de eliminación de subexpresiones comunes

Los dos tipos de métodos de eliminación en la eliminación de subexpresiones comunes son:

1. Eliminación de subexpresión común local : se usa dentro de un solo bloque básico. Donde un bloque básico es una secuencia de código simple que no tiene ramas.

2. Eliminación de subexpresiones comunes globales : se utiliza para un procedimiento completo de eliminación de subexpresiones comunes.

Ejemplo 1:

Antes de la eliminación

a = 10;

b = a + 1 * 2;

c = a + 1 * 2;  

//’ c’ tiene expresión común como ‘b’

d = c + a;

Después de la eliminación

a = 10;

b = a + 1 * 2;

d = b + a;

Entendamos el Ejemplo 1 con un diagrama :

CSE elimination example

fig.: Ejemplo 1

Como se muestra en la figura ( fig.: Ejemplo 1 ), el resultado de ‘d’ sería similar con ambas expresiones. Por lo tanto, eliminaremos una de las subexpresiones comunes, ya que ayuda a una ejecución más rápida y una utilización eficiente de la memoria.

Ejemplo 2:

Antes de la eliminación

x = 11;
y = 11 * 24;  
z = x * 24;
//'z' has common expression as 'y' as 'x' can be evaluated directly as done in 'y'.

Después de la eliminación

y = 11 * 24;

Publicación traducida automáticamente

Artículo escrito por lavleenagr7 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 *