Inhoudsopgave:
- Belangrijkste verschil - Machine-afhankelijk versus machine-onafhankelijke code-optimalisatie
- Wat is machine-afhankelijke code-optimalisatie?
- Wat is machineonafhankelijke codeoptimalisatie?
- Wat is de overeenkomst tussen machine-afhankelijke en machine-onafhankelijke codeoptimalisatie?
- Wat is het verschil tussen machine-afhankelijke en machine-onafhankelijke code-optimalisatie?
- Samenvatting - Machine-afhankelijke versus machine-onafhankelijke code-optimalisatie
Video: Verschil Tussen Machine-afhankelijke En Machine-onafhankelijke Code-optimalisatie
2024 Auteur: Mildred Bawerman | [email protected]. Laatst gewijzigd: 2023-12-16 08:40
Belangrijkste verschil - Machine-afhankelijk versus machine-onafhankelijke code-optimalisatie
Computerprogramma's zijn sets instructies die aan hardware worden gegeven om taken uit te voeren. Deze programma's zijn meestal geschreven in talen van hoog niveau, en de computer begrijpt die taal niet. Daarom wordt een compiler gebruikt om die instructies om te zetten in machinecode of doelcode. Het doorloopt verschillende fasen om de doelcode te bouwen. Code-optimalisatie is er een van. Er zijn twee optimalisatietechnieken, zoals machine-afhankelijke en machine-onafhankelijke code-optimalisatie. Het belangrijkste verschil tussen machine-afhankelijke en machine-onafhankelijke code-optimalisatie is dat de machine-afhankelijke optimalisatie wordt toegepast op objectcode, terwijl machine-onafhankelijke code-optimalisatie wordt toegepast op de tussencode.
INHOUD
1. Overzicht en belangrijkste verschil
2. Wat is machine-afhankelijke code-optimalisatie
3. Wat is machine-onafhankelijke code-optimalisatie
4. Overeenkomsten tussen machine-afhankelijke en machine-onafhankelijke code-optimalisatie
5. Vergelijking zij aan zij - Machine-afhankelijke versus machine-onafhankelijke code-optimalisatie in tabelvorm
6. Samenvatting
Wat is machine-afhankelijke code-optimalisatie?
Bij het converteren van de broncode naar objectcode of doelcode doorloopt de compiler verschillende fasen. Eerst wordt de broncode aan Lexical analyzer gegeven, die tokens produceert. Vervolgens wordt de uitvoer gegeven aan de syntaxisanalysator die onderzoekt of de gegenereerde tokens in logische volgorde staan. Die output wordt aan de semantische analysator gegeven. Stel dat er een stukje code is als p = q + r;
Hier zijn p, q gehele getallen, maar r is een float. Met behulp van de semantische analysator wordt de c integer-variabele geconverteerd naar een float. Daarom doet het de semantische analyse. De output van de semantische analysator gaat naar de tussenliggende codegenerator. Het retourneert een tussencode die vervolgens naar de code-optimizer gaat. Code-optimalisatie is het proces waarbij de niet-essentiële programma-instructies worden verwijderd zonder de betekenis van de feitelijke broncode te veranderen. Het is geen verplichte optimalisatie, maar het kan de looptijd van de doelcode verbeteren. De uitvoer van de code-optimizer wordt aan de codegenerator gegeven en ten slotte wordt de doelcode gebouwd.
Figuur 01: fasen van de compiler
Bij machine-afhankelijke code-optimalisatie wordt optimalisatie toegepast op de broncode. Door voldoende middelen toe te wijzen, kan de uitvoering van het programma bij deze optimalisatie worden verbeterd.
Wat is machineonafhankelijke codeoptimalisatie?
Wanneer optimalisatie wordt uitgevoerd op de tussencode, wordt dit de machine-onafhankelijke code-optimalisatie genoemd. Er zijn verschillende technieken om machineonafhankelijke code-optimalisatie te bereiken. Ze worden beschreven aan de hand van de volgende voorbeelden.
Lees de onderstaande regels code.
voor (j = 0; j <10; j ++) {
b = x + 2;
a [j] = 5 * j;
}
Volgens de bovenstaande code wordt b = x + 2 keer op keer berekend in elke iteratie. Als b eenmaal is berekend, verandert deze niet. Deze lijn kan dus als volgt buiten de lus worden geplaatst.
b = x + 2;
voor (j = 0; j <10; j ++)
{a [j] = 5 * j;
}
Dit wordt codebeweging genoemd.
Lees de onderstaande regels code.
j = 5;
if (j == 10) {
a = b + 20;
}
Volgens bovenstaande code zal 'if block' nooit worden uitgevoerd omdat j-waarde nooit gelijk zal zijn aan 10. Het is al geïnitialiseerd op de waarde 5. Daarom kan dit if-blok worden verwijderd. Deze techniek is het elimineren van dode code.
Een andere methode is krachtvermindering. Rekenkundige bewerkingen zoals vermenigvuldiging vereisen meer geheugen, tijd en CPU-cycli. Deze dure uitdrukkingen kunnen worden vervangen door goedkope uitdrukkingen zoals b = a * 2; of kan worden vervangen door optellen, b = a + a;
Raadpleeg de onderstaande code.
voor (j = 1; j <= 5; j ++) {
waarde = j * 5;
}
In plaats van de vermenigvuldiging kan de code als volgt worden gewijzigd.
int temp = 5;
voor (j = 1; j <= 5; j ++) {
temp = temp + 5;
waarde = temp;
}
Het is mogelijk om de uitdrukkingen te evalueren die tijdens runtime constanten zijn. Het wordt constant vouwen genoemd. Er kan worden gezegd zoals b [j + 1] = c [j + 1];
In plaats daarvan kan het als volgt worden gewijzigd.
n = j +1;
b [n] = c [n];
Er kunnen als volgt lussen zijn.
voor (j = 0; j <5; j ++) {
printf ("a / n");
}
voor (j = 0; j <5; j ++) {
printf ("b / n");
}
Als u a en b afdrukt, hebben beide hetzelfde aantal iteraties. Beide kunnen als volgt worden gecombineerd tot één for-lus.
voor (j = 0; j <5; j ++) {
printf ("a / n");
printf ("b / n");
}
Een andere belangrijke techniek is de eliminatie van de gemeenschappelijke subuitdrukking. Het is om de identieke uitdrukkingen te vervangen door een enkele variabele om de berekening uit te voeren. Raadpleeg de balgcode.
a = b * c + k;
d = b * c + m;
Deze code kan als volgt worden omgezet.
temp = b * c;
a = temp + k;
d = temp + m;
Het is niet nodig om b * c steeds opnieuw te berekenen. De vermenigvuldigde waarde kan worden opgeslagen in een variabele en opnieuw worden gebruikt.
Wat is de overeenkomst tussen machine-afhankelijke en machine-onafhankelijke codeoptimalisatie?
Beide behoren tot Code Optimization
Wat is het verschil tussen machine-afhankelijke en machine-onafhankelijke code-optimalisatie?
Diff Artikel Midden voor Tafel
Machine-afhankelijk versus machine-onafhankelijke code-optimalisatie |
|
Machine-afhankelijke code-optimalisatie wordt toegepast op objectcode. | Machine-onafhankelijke code-optimalisatie wordt toegepast op tussenliggende code. |
Betrokkenheid bij hardware | |
Machine-afhankelijke optimalisatie omvat CPU-registers en absolute geheugenreferenties. | Machine-onafhankelijke code-optimalisatie omvat geen CPU-registers of absolute geheugenreferenties. |
Samenvatting - Machine-afhankelijke versus machine-onafhankelijke code-optimalisatie
Code-optimalisatie bestaat uit twee optimalisatietechnieken, namelijk machine-afhankelijke en machine-onafhankelijke code-optimalisatie. Het verschil tussen machine-afhankelijke en machine-onafhankelijke code-optimalisatie is dat de machine-afhankelijke optimalisatie wordt toegepast op objectcode, terwijl de machine-onafhankelijke code-optimalisatie wordt toegepast op tussenliggende code.
Download de pdf-versie van Machine Dependent vs Machine Independent Code Optimization
U kunt de PDF-versie van dit artikel downloaden en voor offline doeleinden gebruiken volgens de citatienota. Download hier de pdf-versie. Verschil tussen machine-afhankelijke en machine-onafhankelijke codeoptimalisatie
Aanbevolen:
Verschil Tussen Ethische Code En Gedragscode
Code of Ethics vs Code of Conduct De laatste tijd is er veel gesproken over ethische codes en gedragscodes. Zoals hun namen suggereren, ethische codes
Verschil Tussen IFSC-code En Swift-code
IFSC-code versus Swift-code Swift-code en IFSC-code zijn identificatiecodes voor elektronische geldoverdrachten tussen financiële instellingen
Verschil Tussen Supervised En Unsupervised Machine Learning
Belangrijkste verschil - Machinaal leren onder toezicht versus onbewaakt leren Onder toezicht en leren zonder toezicht zijn twee kernconcepten van machine learning. Sup
Verschil Tussen Virtuele Machine En Server
Belangrijkste verschil - Virtuele machine versus server Een computer is een apparaat dat taken kan uitvoeren volgens de gegeven instructies. Een computer bevat multipl
Verschil Tussen Datamining En Machine Learning
Belangrijkste verschil - Datamining versus machine learning Datamining en machine learning zijn twee gebieden die hand in hand gaan. Omdat ze relaties zijn, zijn ze dat ook