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

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

Общие цели оптимизации программного обеспечения:

  • Разработайте или эффективность алгоритма.
  • Уровень исходного кода. Например, Устройство Даффа.
  • Флажки уровня сборки или оптимизатора, часто торгующие временем сборки для эффективности времени выполнения.
  • Уровень компиляции; Выбор лучшего компилятора.
  • Уровень сборки. Лучшая машина, отображающая проблему.
  • Время выполнения Примерами могут служить параметры виртуальной машины и оптимизация по профилю.

Менее строго программные цели оптимизации:

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

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

Часто упоминаемая опасность - «преждевременная оптимизация» (как говорится, «корень всего зла»). Напротив, наиболее существенное влияние на оптимизацию оказывает уровень проектирования с помощью эффективности алгоритма; это самая ранняя стадия развития, таким образом, казалось бы, парадокс.

Способ разрешить этот парадокс состоит в том, чтобы рассмотреть правильный порядок реализаций. На первом месте должна быть корректность (таким образом, начиная с самого простого, наиболее очевидного правильного кода), на втором месте алгоритмические улучшения, на втором месте - «микрооптимизации», улучшающие производительность. «Преждевременная оптимизация» означает сразу же сосредоточиться на микрооптимизации, прежде чем даже формулировать правильное решение (что часто приводит к совершенно неправильному, хотя и эффективному) коду; или перед рассмотрением алгоритмических оптимизаций, которые, если возможно, в первую очередь устранят эти микрооптимизации.

При использовании этого тега, то есть вопроса об оптимизации, укажите цель оптимизации, которую вы имеете в виду. Приведенные выше списки иллюстрируют, что многие возможные цели оптимизации являются взаимоисключающими (например, производительность по сравнению с простотой / ремонтопригодностью). Следовательно, невозможно оптимизировать все; а оптимизация без четкой цели - еще одна распространенная опасность, которая делает вопрос слишком широким или неясным.

Смотрите также: profilingassemblycompiler