Diferencia entre la optimización del código dependiente de la máquina y la máquina

Diferencia entre la optimización del código dependiente de la máquina y la máquina

Diferencia de claves: máquina Dependiente vs Máquina Optimización de código independiente
 

Los programas de computadora son conjuntos de instrucciones dadas al hardware, para realizar tareas. Estos programas se escriben principalmente en idiomas de alto nivel, y la computadora no comprende ese idioma. Por lo tanto, se utiliza un compilador para convertir esas instrucciones en código de máquina o código de destino. Atraviesa varias fases para construir el código objetivo. La optimización del código es uno de ellos. Hay dos técnicas de optimización como la optimización del código de la máquina dependiente de la máquina y la máquina. El diferencia clave Entre la optimización del código dependiente de la máquina y la máquina es que el La optimización dependiente de la máquina se aplica al código de objeto, mientras que la optimización del código independiente de la máquina se aplica al código intermedio.

CONTENIDO

1. Descripción general y diferencia de claves
2. ¿Qué es la optimización del código dependiente de la máquina?
3. ¿Qué es la optimización del código independiente de la máquina?
4. Similitudes entre la optimización del código dependiente de la máquina y la máquina
5. Comparación lado a lado: optimización de código independiente de la máquina dependiente de la máquina en forma tabular
6. Resumen

¿Qué es la optimización del código dependiente de la máquina??

Al convertir el código fuente en código de objeto o código de destino, el compilador pasa por varias fases. Primero, el código fuente se entrega al analizador léxico que produce tokens. Luego, la salida se otorga al analizador de sintaxis que investiga si los tokens generados están en orden lógico. Esa salida se da al analizador semántico. Suponga que hay una pieza de código como P = Q + R;

Aquí, P, Q son enteros, pero R es un flotador. Usando el analizador semántico, la variable de entero C se convierte en un flotador. Por lo tanto, hace el análisis semántico. La salida del analizador semántico va al generador de código intermedio. Devuelve un código intermedio que luego va al optimizador de código. La optimización del código es el proceso de eliminar las declaraciones del programa no esenciales sin cambiar el significado del código fuente real. No es una optimización obligatoria, pero puede mejorar el tiempo de ejecución del código de destino. La salida del optimizador de código se proporciona al generador de código y finalmente, el código de destino está creado.

Figura 01: Fases del compilador

En la optimización del código dependiente de la máquina, la optimización se aplica al código fuente. La asignación de una cantidad suficiente de recursos puede mejorar la ejecución del programa en esta optimización.

¿Qué es la optimización del código independiente de la máquina??

Cuando la optimización se realiza en el código intermedio, se denomina optimización del código independiente de la máquina. Existen diferentes técnicas para lograr la optimización de código independiente de la máquina. Se describen utilizando los siguientes ejemplos.

Leer líneas de código a continuación.

para (j = 0; j<10; j ++)

b = x+2;

a [j] = 5* j;

De acuerdo con el código anterior, b = x+2 se calcula una y otra vez en cada iteración. Una vez que se calcula B, no cambia. Entonces, esta línea se puede colocar fuera del bucle de la siguiente manera.

b = x+2;

para (j = 0; j< 10; j++)

a [j] = 5 * j;

Esto se llama movimiento de código.

Leer líneas de código a continuación.

j = 5;

if (j == 10)

a = b+20;

De acuerdo con el código anterior, 'si el bloque' nunca se ejecutará porque el valor j nunca será igual a 10. Ya se inicializó al valor 5. Por lo tanto, esto si el bloque se puede eliminar. Esta técnica es la eliminación del código muerto.

Otro método es la reducción de la fuerza. Las operaciones aritméticas como la multiplicación requieren más memoria, tiempo y ciclos de CPU. Estas expresiones costosas pueden ser reemplazadas por expresiones baratas como B = A * 2; o se puede reemplazar por suma, b = a + a;

Consulte el siguiente código.

para (j = 1; j <= 5; j ++)

valor = j * 5;

En lugar de la multiplicación, el código se puede cambiar de la siguiente manera.

int temp = 5;

para (j = 1; j<=5; j++)

temp = temp + 5;

valor = temp;

Es posible evaluar las expresiones que son constantes en tiempo de ejecución. Se llama plegamiento constante. Se puede establecer como b [j+1] = c [j+1];

En cambio, se puede cambiar de la siguiente manera.

n = j +1;

b [n] = c [n];

Puede haber bucles de la siguiente manera.

para (j = 0; j<5; j++)

printf ("a \ n");

para (j = 0; j <5; j++)

printf ("b \ n");

Impresión A y B, ambos tienen el mismo número de iteraciones. Ambos se pueden combinar a uno para el bucle de la siguiente manera.

para (j = 0; j <5; j++)

printf ("a \ n");

printf ("b \ n");

Otra técnica importante es la Eliminación de la subcresión común. Es reemplazar las expresiones idénticas con una sola variable para hacer el cálculo. Consulte el código a continuación.

a = b*c + k;

d = b* c + m;

Este código se puede convertir de la siguiente manera.

temp = b*c;

a = temp + k;

d = temp + m;

No es necesario calcular b*c una y otra vez. El valor multiplicado se puede almacenar en una variable y reutilizado.

¿Cuál es la similitud entre la optimización del código dependiente de la máquina y la máquina??

  • Ambos pertenecen a la optimización del código

¿Cuál es la diferencia entre la optimización del código dependiente de la máquina y la máquina??

Dependiente de la máquina frente a la optimización de código independiente de la máquina 

La optimización del código dependiente de la máquina se aplica al código de objeto. La optimización del código independiente de la máquina se aplica al código intermedio.
Participación con hardware
La optimización dependiente de la máquina implica registros de CPU y referencias de memoria absoluta.  La optimización del código independiente de la máquina no involucra registros de CPU o referencias de memoria absoluta.

Resumen -Máquina Optimización de código independiente de la máquina dependiente frente a la máquina 

La optimización del código consta de dos técnicas de optimización, a saber, la optimización de código independiente de la máquina dependiente de la máquina y la máquina. La diferencia entre la optimización del código dependiente de la máquina y la máquina es que la optimización dependiente de la máquina se aplica al código de objeto, mientras que la optimización del código independiente de la máquina se aplica al código intermedio.

Descargue la versión PDF de la optimización de código independiente de la máquina dependiente de la máquina

Puede descargar la versión PDF de este artículo y usarla para fines fuera de línea según la nota de cita. Descargue la versión PDF aquí Diferencia entre la optimización del código dependiente de la máquina y la máquina

Referencia:

1."Diseño del compilador | Optimización de código."Geeksforgeeks. Disponible aquí
2.Punto, tutoriales. "Diseño del compilador: optimización de código." Www.punto de tutorial.com, Tutorials Point, 15 de agosto. 2017. Disponible aquí  
3.Estudies4yOU. "JNTUH CSE Material de estudio."Diferencia entre la optimización de código dependiente de la máquina e independiente. Disponible aquí  

Imagen de cortesía:

1.'Compilador' de I, Surachit, (CC By-Sa 3.0) a través de Commons Wikimedia