<<
>>

Оптимизировать или нет?

Оптимизация - не панацея, и ее применение не бесплатно. В зависимости от степени оптимизации время, требуемое для компиляции программы, может значительно возрастать. Для небольших программ требуемое время можно не принимать во внимание, но для больших оно может иметь значение.

Оптимизация также может усложнить отладку вследствие генерации кода, который трудно непосредственно связать с исходными операторами в программе.

Оптимизация может неожиданно ввести ошибки в код, сгенерированный из вполне правильного текста программы. Ситуация, когда на переменную ссылаются как непосредственно по имени, так и посредством одного или нескольких указателей, может затруднить работу компилятора по определению того, "жива" ли еще переменная и, следовательно, должна оставаться в регистре, или она "умерла" и тогда должна быть сохранена в памяти.

Вынесение инвариантного кода может быть потенциальным источником ошибок. В цикле

оптимизирующий компилятор может определить, что выражение x/y есть инвариант, и вынесет его за пределы цикла, игнорируя проверку на 0 и создавая возможность возникновения ситуации деления на 0.

Когда компилятор выполняет удаление переменных индукции цикла он может непреднамеренно породить ситуацию переполнения, потому что он может переструктурировать вычисления, включающие индексы цикла. В приведенном ранее примере, где выполняется оптимизация, используя вынесение инвариантного кода и удаление переменных индукции цикла, переменная индукции i была извлечена, в результате имеем:

В этом случае, поскольку значения j, k и v неизвестны, существует возможность переполнения для выражения T1 * v. Цикл может не закончиться.

<< | >>
Источник: Филипп Н. Хислей

. Генерация высококачественного кода для программ, написанных на СИ. 2001

Еще по теме Оптимизировать или нет?:

  1. Беседа 16. заключительная,или Нет у революции конца
  2. сравнимо ли каждое движение с каждым или нет
  3. Нет нового дирижизма
  4. ГЛАВА 7.20 ВАМ СКАЗАЛИ «НЕТ»
  5. Нет, Макдональд – не миф
  6. ГЛАВА 3.3 ЕСЛИ У ТЕБЯ НЕТ ЦЕЛИ, ТО...
  7. В своем деле нет конкуренции!
  8. В человеческом общении нет ошибок
  9. 2. Проверка документов? Нет проблем!
  10. Гарри Фридман. Нет, спасибо, я просто смотрю, 2004
  11. ГЛАВА 7.21 ЕСЛИ ВАМ СКАЗАЛИ «НЕТ»,ТО
  12. Ситуация №2 Вы один – гопников двое и более. Посторонних свидетелей произошедшего нет.
  13. Уилльям Юри. Как преодолеть НЕТ: переговоры в трудных ситуациях, 2012
  14. 1. 5. Факт принадлежности правоустанавливающих документов лицу, имя, отчество или фамилия которого, указанные в документе, не совпадают с именем, отчеством или фамилией этого лица, указанными в паспорте или свидетельстве о рождении
  15. § 5. ИЗГОТОВЛЕНИЕ ИЛИ СБЫТ ПОДДЕЛЬНЫХ ДЕНЕГ ИЛИ ЦЕННЫХ БУМАГ (СТ. 186 УК)
  16. 40. ИЗГОТОВЛЕНИЕ ИЛИ СБЫТ ПОДДЕЛЬНЫХ ДЕНЕГ ИЛИ ЦЕННЫХ БУМАГ
  17. 5.26. Криминалистическая характеристика изготовления или сбыта поддельных денег или ценных бумаг
  18. § 1.2. Незаконные производство, сбыт или пересылка наркотических средств, психотропных веществ или их аналогов(ст. 2281 УК
  19. § 2.9. Убийство из корыстных побуждений или по найму, а равно сопряженное с разбоем, вымогательством или бандитизмом (п. «з» ч. 2 ст. 105 УК