Иллюстрированный самоучитель по практике программирования

Производительность

  • Увеличение производительности

    Он был силен и много обещал, – Свершений нет, а силы растерял. | Шекспир | Король Генрих VIII | Когда-то программисты затрачивали огромные усилия на то, чтобы сделать свои программы эффективными, так как компьютеры были очень медленными и очень дорогими.
  • Узкое место

    Нам хотелось бы начать с описания того, как мы избавились от узкого места в важной программе нашей вычислительной системы. | Наша входящая почта поступала к нам через одну машину, называемую шлюзом (gateway), которая объединяла нашу внутреннюю сеть с внешним Интернетом.
  • Замеры времени и профилирование

    Автоматизируйте замеры времени. В большинстве систем существуют команды, позволяющие выяснить, сколько времени работала программа. В Unix такая команда называется time: | Эта команда запускает программу и возвращает три числа, означающих время в секундах: время real – физическое время, израсходованное до завершения работы программы;
  • Стратегии ускорения

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

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

    Память – один из самых дорогостоящих компьютерных ресурсов, которого вечно не хватает; огромное количество плохих программ возникло из попыток выжать все, что можно, из того немногого, что имелось в наличии.
  • Предварительная оценка

    Трудно заранее оценить, насколько быстрой получится программа, и вдвойне трудно оценить скорость специфических конструкций языка или машинных инструкций. Однако совсем не трудно создать модель затрат (cost model) языка или системы, которая даст, по крайней мере, общее представление о том, сколько времени занимает выполнение основных операций.
  • Заключение. Дополнительная литература.

    Если вы выбрали верный алгоритм, то, как правило, об оптимизации его производительности можно уже особо и не задумываться. Однако, если необходимость в ней все же возникла, основной цикл процесса должен выглядеть так: выполните замеры;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.