Différence entre la machine dépendante et l'optimisation du code indépendant de la machine

Différence entre la machine dépendante et l'optimisation du code indépendant de la machine

Différence clé - Machine Dépendants vs Machine Optimisation indépendante du code
 

Les programmes informatiques sont des ensembles d'instructions données au matériel, pour effectuer des tâches. Ces programmes sont principalement écrits dans des langues de haut niveau, et l'ordinateur ne comprend pas cette langue. Par conséquent, un compilateur est utilisé pour convertir ces instructions en code machine ou code cible. Il passe par plusieurs phases pour construire le code cible. L'optimisation du code en fait partie. Il existe deux techniques d'optimisation comme, dépendant de la machine et optimisation du code indépendant de la machine. Le différence clé entre la machine dépendante et l'optimisation du code indépendant de la machine est que le L'optimisation dépendante de la machine est appliquée au code d'objet tandis que l'optimisation du code indépendant de la machine est appliquée au code intermédiaire.

CONTENU

1. Aperçu et différence clé
2. Qu'est-ce que l'optimisation du code dépendante de la machine
3. Qu'est-ce que l'optimisation du code indépendant de la machine
4. Similitudes entre la machine dépendante et l'optimisation du code indépendant de la machine
5. Comparaison côte à côte - Optimisation du code indépendant de la machine VS Machine sous forme tabulaire
6. Résumé

Qu'est-ce que l'optimisation du code dépendante de la machine?

Lors de la conversion du code source en code d'objet ou code cible, le compilateur passe par plusieurs phases. Premièrement, le code source est donné à l'analyseur lexical qui produit des jetons. Ensuite, la sortie est donnée à Syntax Analyzer qui examine si les jetons générés sont dans l'ordre logique. Cette sortie est donnée à l'analyseur sémantique. Supposons qu'il existe un morceau de code comme p = q + r;

Ici, P, Q sont des entiers, mais R est un flotteur. À l'aide de l'analyseur sémantique, la variable entière C est convertie en flotteur. Par conséquent, il fait l'analyse sémantique. La sortie de l'analyseur sémantique va au générateur de code intermédiaire. Il renvoie un code intermédiaire qui va ensuite à l'optimiseur de code. L'optimisation du code est le processus d'élimination des instructions de programme non essentiels sans modifier la signification du code source réel. Ce n'est pas une optimisation obligatoire mais il peut améliorer le temps d'exécution du code cible. La sortie de l'optimiseur de code est donnée au générateur de code, et enfin, le code cible est construit.

Figure 01: phases du compilateur

Dans l'optimisation du code dépendant de la machine, l'optimisation est appliquée au code source. La répartition suffisante de ressources peut améliorer l'exécution du programme dans cette optimisation.

Qu'est-ce que l'optimisation du code indépendant de la machine?

Lorsque l'optimisation est effectuée sur le code intermédiaire, il est appelé l'optimisation du code indépendant de la machine. Il existe différentes techniques pour réaliser l'optimisation du code indépendant de la machine. Ils sont décrits en utilisant des exemples suivants.

Lire les lignes de code ci-dessous.

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

b = x + 2;

a [j] = 5 * j;

Selon le code ci-dessus, b = x + 2 est calculé encore et encore dans chaque itération. Une fois que B est calculé, il ne change pas. Ainsi, cette ligne peut être placée à l'extérieur de la boucle comme suit.

b = x + 2;

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

a [j] = 5 * j;

C'est ce qu'on appelle le mouvement du code.

Lire les lignes de code ci-dessous.

j = 5;

if (j == 10)

a = b + 20;

Selon le code ci-dessus, «si Block» ne s'exécutera jamais parce que la valeur J ne sera jamais égale à 10. Il est déjà initialisé à la valeur 5. Par conséquent, ce bloc peut être supprimé. Cette technique est l'élimination du code mort.

Une autre méthode est la réduction de la force. Les opérations arithmétiques comme la multiplication nécessitent plus de mémoire, de temps et de cycles CPU. Ces expressions coûteuses peuvent être remplacées par des expressions bon marché comme b = a * 2; ou peut être remplacé par l'addition, b = a + a;

Référer le code ci-dessous.

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

valeur = j * 5;

Au lieu de la multiplication, le code peut être modifié comme suit.

int temp = 5;

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

temp = temp + 5;

valeur = temp;

Il est possible d'évaluer les expressions qui sont des constantes lors de l'exécution. On l'appelle pliage constant. Il peut être indiqué tel que B [J + 1] = C [J + 1];

Au lieu de cela, il peut être modifié comme suit.

n = j +1;

b [n] = c [n];

Il peut y avoir des boucles comme suit.

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

printf («a \ n»);

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

printf («b \ n»);

L'impression A et B, les deux ont le même nombre d'itérations. Les deux peuvent être combinés à un pour boucle comme suit.

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

printf («a \ n»);

printf («b \ n»);

Une autre technique importante est le Élimination commune de la sous-expression. Il s'agit de remplacer les expressions identiques par une seule variable pour faire le calcul. Référer le code ci-dessous.

a = b * c + k;

d = b * c + m;

Ce code peut être converti comme suit.

temp = b * c;

a = temp + k;

d = temp + m;

Il n'est pas nécessaire de calculer b * c encore et encore. La valeur multipliée peut être stockée dans une variable et réutilisée.

Quelle est la similitude entre la machine dépendante et l'optimisation du code indépendant de la machine?

  • Les deux appartiennent à l'optimisation du code

Quelle est la différence entre la machine dépendante et l'optimisation du code indépendant de la machine?

Optimisation du code indépendant de la machine vs machine 

L'optimisation du code dépendant de la machine est appliquée au code d'objet. L'optimisation du code indépendante de la machine est appliquée au code intermédiaire.
Implication avec matériel
L'optimisation dépendante de la machine implique des registres du processeur et des références de mémoire absolue.  L'optimisation du code indépendant de la machine n'implique pas les registres du processeur ou les références de mémoire absolues.

Résumé - Machine Optimisation de code indépendant dépendante vs machine 

L'optimisation du code se compose de deux techniques d'optimisation à savoir, dépendant de la machine et optimisation du code indépendant de la machine. La différence entre l'optimisation du code dépendant de la machine et indépendante de la machine est que l'optimisation dépendante de la machine est appliquée au code de l'objet tandis que l'optimisation du code indépendant de la machine est appliquée au code intermédiaire.

Téléchargez la version PDF de la machine dépendante vs Optimisation de code indépendant de la machine

Vous pouvez télécharger la version PDF de cet article et l'utiliser à des fins hors ligne selon la note de citation. Veuillez télécharger la version PDF ici différence entre la machine dépendante et l'optimisation du code indépendant de la machine

Référence:

1.«Conception du compilateur | Optimisation du code.”Geeksforgeeks. Disponible ici
2.Point, tutoriels. «Conception du compilateur - Optimisation du code.»Www.tutorielpoint.com, Tutorials Point, 15 août. 2017. Disponible ici  
3.Estudes 4ou. «Matériel d'étude JNTUH CSE.»Différence entre l'optimisation du code dépendante de la machine et indépendante. Disponible ici  

Image gracieuseté:

1.'Compiler' par i, Surachit, (cc by-sa 3.0) via Commons Wikimedia