Итерация


Оценка производительности

Относительное быстродействие распространенных операций

Частые причины снижения эффективности

Заблуждения об оптимизации кода

Принцип Парето

Введение в оптимизацию кода

Оптимизация кода

Оборудование

Компиляция кода

Иногда правильный выбор компилятора позволяет забыть об оптимизации кода.

Иногда самым выгодным и эффективным способом повышения производительности программы является покупка нового оборудования.

Оптимизацией кода (code tuning) называют изменение корректного кода, направленное на повышение его эффективности.

Это не самый эффективный способ повышения производительности.

Овладение мастерством написания эффективного кода — признаком превращения в серьезного программиста.

Принцип Парето, что 80% результата можно получить, приложив 20% усилий.

Доведите работу до конца и только потом совершенствуйтесь.

Сокращение числа строк высокоуровневого кода повышает быстродействие или уменьшает объем итогового машинного кода — НЕВЕРНО!

Одни операции, вероятно, выполняются быстрее или компактнее других — НЕВЕРНО!

Оптимизацию следует выполнять по мере написания — НЕВЕРНО!

Быстродействие программы не менее важно, чем ее корректность — НЕВЕРНО!

3. Где оптимизировать?

Операции ввода/вывода.

Системные вызовы.

Ошибки.

Большинство частых операций — в том числе вызовы методов, присваивание, арифметические операции над целыми числами и числами с плавающей запятой — имеет примерно одинаковую цену. Трансцендентные математические функции очень дороги. Вызовы полиморфных методов чуть дороже вызовов других методов.

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

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

Методики можно эффективно комбинировать, поэтому даже после обнаружения одного удачного вида оптимизации продолжайте пробовать другие виды.

6. Подход к оптимизации кода: резюме

Рассматривая целесообразность оптимизации кода, придерживайтесь следующего алгоритма:

  1. Напишите хороший и понятный код, поддающийся легкому изменению.
  2. Если производительность вас не устраивает:
    1. сохраните работоспособную версию кода, чтобы позднее вы могли вернуться к «последнему нормальному состоянию»;
    2. оцените производительность системы с целью нахождения горячих точек;
    3. узнайте, обусловлено ли плохое быстродействие неадекватным проектом, неверными типами данных или неудачными алгоритмами и определите, уместна ли оптимизация кода; если оптимизация кода неуместна, вернитесь к п. 1;
  3. d оптимизируйте узкое место, определенное на этапе (с);
    1. оцените каждое улучшение по одному за раз;
    2. если оптимизация не привела к улучшению кода, вернитесь к коду, сохраненному на этапе (а).
  4. Повторите процесс, начиная с п. 2.

 

 


Лекция 13-15 «Тестирование»