Оптимизировать или нет?
Оптимизировать или нет?
Оптимизация - не панацея, и ее применение не бесплатно. В зависимости от степени оптимизации время, требуемое для компиляции программы, может значительно возрастать. Для небольших программ требуемое время можно не принимать во внимание, но для больших оно может иметь значение.
Оптимизация также может усложнить отладку вследствие генерации кода, который трудно непосредственно связать с исходными операторами в программе. Оптимизация может неожиданно ввести ошибки в код, сгенерированный из вполне правильного текста программы. Ситуация, когда на переменную ссылаются как непосредственно по имени, так и посредством одного или нескольких указателей, может затруднить работу компилятора по определению того, "жива" ли еще переменная и, следовательно, должна оставаться в регистре, или она "умерла" и тогда должна быть сохранена в памяти.
Вынесение инвариантного кода может быть потенциальным источником ошибок. В цикле
int a[10], x, y;
for(i = 0; i < 10; i++)
if( y != 0 )
a[i] = x / y;
оптимизирующий компилятор может определить, что выражение x/y есть инвариант, и вынесет его за пределы цикла, игнорируя проверку на 0 и создавая возможность возникновения ситуации деления на 0.
Когда компилятор выполняет удаление переменных индукции цикла он может непреднамеренно породить ситуацию переполнения, потому что он может переструктурировать вычисления, включающие индексы цикла. В приведенном ранее примере, где выполняется оптимизация, используя вынесение инвариантного кода и удаление переменных индукции цикла, переменная индукции i была извлечена, в результате имеем:
T1 = j + k;
for(x = 0; x < T1 * v; x += T1);
В этом случае, поскольку значения j, k и v неизвестны, существует возможность переполнения для выражения T1 * v. Цикл может не закончиться.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
22.5.2. Как оптимизировать программу
22.5.2. Как оптимизировать программу В качестве оптимизации программы могу вам порекомендовать предпринять следующие действия:1. Запустите профайлер, и пусть он определит время работы всех функций.2. Перепишите функцию (или функции), которые занимают больше всего
Зачем оптимизировать BIOS?
Зачем оптимизировать BIOS? Несмотря на то, что BIOS функционирует только в интервале между включением компьютера и активацией операционной системы, ее настройки будут действовать постоянно, пока работает ваша система. Любые параметры, заданные в BIOS, существенно влияют на
Как оптимизировать BIOS?
Как оптимизировать BIOS? Ключевой инструмент оптимизации BIOS – это встроенная утилита системной конфигурации. Как говорилось ранее, именно в ней вы можете изменить настройки функций BIOS.Изучив их, вы поймете, насколько важна BIOS для вашего компьютера. Функции BIOS управляют
Зачем оптимизировать BIOS?
Зачем оптимизировать BIOS? Несмотря на то, что BIOS функционирует только в интервале между включением компьютера и активацией операционной системы, ее настройки будут действовать постоянно, пока работает ваша система. Любые параметры, заданные в BIOS, существенно влияют на
Как оптимизировать BIOS?
Как оптимизировать BIOS? Ключевой инструмент оптимизации BIOS – это встроенная утилита системной конфигурации. Как говорилось ранее, именно в ней вы можете изменить настройки функций BIOS.Изучив их, вы поймете, насколько важна BIOS для вашего компьютера. Функции BIOS управляют
Как оптимизировать фильм
Как оптимизировать фильм А теперь настала пора поговорить собственно об оптимизации графики Flash. Этот разговор займет довольно много времени и будет вестись отдельно о векторной графике, отдельно об импортированной растровой графике и отдельно о звуке.Оптимизация