Съдържание:
- Основна разлика - машинно зависима от машинно независима оптимизация на кода
- Какво е машинно зависима оптимизация на кода?
- Какво представлява машинно независимата оптимизация на кода?
- Каква е приликата между машинно зависима и независима от машината оптимизация на кода?
- Каква е разликата между машинно зависимата и машинно независимата оптимизация на кода?
- Резюме - Оптимизация на машината, зависима от машината, независимо от машината
Видео: Разлика между машинно зависима и независима от машината оптимизация на кода
2024 Автор: Mildred Bawerman | [email protected]. Последно модифициран: 2023-12-16 08:37
Основна разлика - машинно зависима от машинно независима оптимизация на кода
Компютърните програми са набор от инструкции, дадени на хардуера за изпълнение на задачи. Тези програми са написани най-вече на езици на високо ниво и компютърът не разбира този език. Следователно се използва компилатор за преобразуване на тези инструкции в машинен код или целеви код. Той преминава през няколко фази за изграждане на целевия код. Оптимизацията на кода е един от тях. Има две техники за оптимизация като машинно зависима и машинна независима оптимизация на кода. Ключовата разлика между машинно зависима и машинно независима оптимизация на кода е, че машинно зависимата оптимизация се прилага към обектния код, докато машинно независимата оптимизация на кода се прилага към междинния код.
СЪДЪРЖАНИЕ
1. Общ преглед и ключова разлика
2. Какво е машинно зависима оптимизация на кода
3. Какво е машинно независима оптимизация на кода
4. Прилики между машинно зависима и машинно независима оптимизация на кода
5. Равно до сравнение - машинно зависима от машинна независима оптимизация на кода в таблична форма
6. Обобщение
Какво е машинно зависима оптимизация на кода?
Когато преобразува изходния код в обектен код или целеви код, компилаторът преминава през няколко фази. Първо, изходният код се дава на Lexical analyzer, който произвежда жетони. След това изходът се дава на анализатора на синтаксиса, който изследва дали генерираните маркери са в логически ред. Този изход се дава на семантичния анализатор. Да приемем, че има парче код като p = q + r;
Тук p, q са цели числа, но r е поплавък. С помощта на семантичния анализатор променливата c integer се преобразува в плаваща. Следователно той извършва семантичния анализ. Изходът на семантичния анализатор отива към междинния генератор на код. Той връща междинен код, който след това отива в оптимизатора на кода. Оптимизацията на кода е процес на премахване на несъществените програмни изявления, без да се променя значението на действителния изходен код. Това не е задължително оптимизиране, но може да подобри времето за работа на целевия код. Изходът на оптимизатора на кода се дава на генератора на кода и накрая се изгражда целевият код.
Фигура 01: Фази на компилатора
При машинно зависима оптимизация на кода, оптимизацията се прилага към изходния код. Разпределянето на достатъчно количество ресурси може да подобри изпълнението на програмата при тази оптимизация.
Какво представлява машинно независимата оптимизация на кода?
Когато се извършва оптимизация на междинния код, тя се нарича машинна независима оптимизация на кода. Съществуват различни техники за постигане на независима от машината оптимизация на кода. Те са описани, като се използват следните примери.
Прочетете долните редове код.
за (j = 0; j <10; j ++) {
b = x + 2;
a [j] = 5 * j;
}
Съгласно горния код, b = x + 2 се изчислява отново и отново във всяка итерация. След като се изчисли b, то не се променя. Така че, този ред може да бъде поставен извън цикъла, както следва.
b = x + 2;
за (j = 0; j <10; j ++)
{a [j] = 5 * j;
}
Това се нарича движение на кода.
Прочетете долните редове код.
j = 5;
ако (j == 10) {
a = b + 20;
}
Съгласно горния код, 'if block' никога няма да се изпълни, защото j стойността никога няма да бъде равна на 10. Тя вече е инициализирана до стойността 5. Следователно това, ако блокът може да бъде премахнат. Тази техника е премахване на мъртъв код.
Друг метод е намаляването на силата. Аритметичните операции като умножение изискват повече памет, време и цикли на процесора. Тези скъпи изрази могат да бъдат заменени с евтини изрази като b = a * 2; или може да бъде заменено с добавяне, b = a + a;
Вижте кода по-долу.
за (j = 1; j <= 5; j ++) {
стойност = j * 5;
}
Вместо умножението, кодът може да се промени, както следва.
int temp = 5;
за (j = 1; j <= 5; j ++) {
temp = temp + 5;
стойност = темп;
}
Възможно е да се оценят изразите, които са константи по време на изпълнение. Нарича се постоянно сгъване. Може да се посочи като b [j + 1] = c [j + 1];
Вместо това той може да бъде променен по следния начин.
n = j +1;
b [n] = c [n];
Може да има цикли, както следва.
за (j = 0; j <5; j ++) {
printf („a / n“);
}
за (j = 0; j <5; j ++) {
printf (“b / n”);
}
Печат a и b, и двата имат еднакъв брой итерации. И двете могат да се комбинират в един за цикъл, както следва.
за (j = 0; j <5; j ++) {
printf („a / n“);
printf (“b / n”);
}
Друга важна техника е елиминирането на Common sub expression. Това е да замените идентичните изрази с една променлива, за да направите изчислението. Вижте долния код.
a = b * c + k;
d = b * c + m;
Този код може да бъде преобразуван, както следва.
temp = b * c;
a = temp + k;
d = temp + m;
Не е необходимо да се изчислява b * c отново и отново. Умножената стойност може да се съхранява в променлива и да се използва повторно.
Каква е приликата между машинно зависима и независима от машината оптимизация на кода?
И двете принадлежат на кодовата оптимизация
Каква е разликата между машинно зависимата и машинно независимата оптимизация на кода?
Различна статия Средна преди таблица
Зависима от машината срещу Независима от машината оптимизация на кода |
|
Машинно зависима оптимизация на код се прилага към обектния код. | Независима от машината оптимизация на кода се прилага към междинен код. |
Участие с хардуер | |
Машинно зависимата оптимизация включва регистрите на процесора и абсолютни препратки към паметта. | Машинно независимата оптимизация на кода не включва CPU регистри или абсолютни препратки към паметта. |
Резюме - Оптимизация на машината, зависима от машината, независимо от машината
Оптимизацията на кода се състои от две техники за оптимизация, а именно машинна зависимост и машинна независима оптимизация на кода. Разликата между машинно зависима и машинно независима оптимизация на кода е, че машинно зависимата оптимизация се прилага към обектния код, докато машинно независимата оптимизация на кода се прилага към междинен код.
Изтеглете PDF версията на Machine Dependent vs Machine Independent Code Optimization
Можете да изтеглите PDF версия на тази статия и да я използвате за офлайн цели според бележката към цитата. Моля, изтеглете PDF версия тук Разлика между машинно зависима и независима от машината оптимизация на кода
Препоръчано:
Разлика между IFSC кода и Swift кода
Кодът на IFSC срещу Swift Code Кодът на Swift и кодът на IFSC са идентификационни кодове за целите на електронния паричен превод между финансови институции, основно
Разлика между изходния код и байт кода
Основна разлика - Изходен код срещу байт код Компютърът е машина, която може да изпълнява задачи в съответствие с инструкциите, предоставени от потребителя. Компютърна pr
Разлика между SWIFT кода и маршрутизиращите номера
SWIFT код срещу маршрутни номера Важността на SWIFT кода и маршрутизиращите номера в банковия свят ни кара да знаем разликата между SWI
Разлика между контролирано и неподдържано машинно обучение
Ключова разлика - Контролирано срещу ненаблюдавано машинно обучение Контролираното обучение и ненаблюдаваното обучение са две основни концепции на машинното обучение. Sup
Разлика между SWIFT кода и кода за сортиране
SWIFT код срещу код за сортиране Виждайки, че прехвърлянето на пари между сметки е често срещано действие, което се извършва по целия свят в съвременността, то е