Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций (рус) v1.1.doc
Скачиваний:
11
Добавлен:
14.04.2019
Размер:
449.02 Кб
Скачать

4. Когда выполнять контроль качества по?

Контролю качества следует уделять должное внимание на всех этапах проекта.

5. Главный Закон Контроля Качества по.

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

5. Ключевые моменты.

  • Высокого качества можно достичь без дополнительных затрат, если предотвращать дефекты, а не исправлять их.

  • Стремление к одним характеристикам качества препятствует достижению других.

  • Никакая методика обнаружения дефектов не является достаточно эффективной.

  • Чем раньше вы обнаружите дефект, тем меньше вреда он успеет принести.

  • В мире программирования контроль качества ориентирован на процесс.

Лекция 12 «Методы оптимизации»

1. Общее обсуждение производительности ПО

1.1. Характеристики качества и производительность

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

1.2. Производительность и оптимизация кода

Не торопитесь улучшать быстродействие или объем на уровне кода. Подумайте об эффективности в контексте:

  • требований к программе;

  • проекта программы;

  • проектов классов и методов;

  • взаимодействия программы с ОС;

  • компиляции кода;

  • оборудования;

  • оптимизации кода.

1.3. Требования к программе

Прежде чем тратить время на решение проблемы с производительностью, убедитесь, что она действительно требует решения.

1.4. Проект программы

Проект программы определяет ее основные черты — главным образом, способ ее разделения на классы.

  • Задание отдельных целевых показателей использования ресурсов делает производительность системы предсказуемой.

  • Простое задание явных целей повышает вероятность их достижения.

  • Вы можете поставить цели, которые непосредственно не направлены на повышение эффективности, но способствуют этому в долгосрочной перспективе.

1.5. Проекты классов и методов

Проектирование классов и методов предоставляет еще одну возможность повышения производительности ПО.

1.6. Взаимодействие программы с ОС

Низкая производительность может объясняться большим объемом или медленным выполнением методов ОС.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ошибки.

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

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

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

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

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