Материал предоставлен https://it.rfei.ru

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

Производительность — это способность программного продукта как можно меньше зависеть от ресурсов оборудования: процессорного времени, пространства, занимаемого во внутренней и внешней памяти, пропускной способности каналов связи.

Зачастую один и тот же человек в разное время высказывает разные типы отношения и является то доктором Abstract, то мистером Nanosecond.

В сообществе профессиональных разработчиков есть две типичные модели мнений о производительности:

  • Некоторые разработчики одержимы проблемами производительности, что заставляет их прилагать много усилий к предполагаемой оптимизации.
  • Существует общая тенденция недооценки вопросов производительности, вытекающая из справедливых убеждений, существующих в промышленности: «сделай правильно, прежде чем сделать быстро» и «модель компьютера будущего года все равно будет на 50% быстрее».

Где же истина? Разработчики часто явно излишне заботятся о микрооптимизации. Как уже отмечалось, производительность ничего не стоит, если программа некорректна. Забота о производительности должна сопоставляться с другими целями, такими как расширяемость и возможность повторного использования — ведь оптимизация может сделать программное обеспечение настолько специализированным, что оно не будет годно для повторного использования и в случаях изменения спецификации.

Все это, однако, не умаляет важности производительности, особенно в нынешнюю эпоху развития приложений массового обслуживания: никому не нравится ждать ответа от web-приложения, перегруженного запросами. Необдуманное отношение к производительности неприемлемо. Если конечная система медленно работает или громоздка, то начинают жаловаться и те, кто заявлял, что «скорость не так уж важна».

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

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

Возможность повторного использованияСовместимость