Производительность — это способность программного продукта как можно меньше зависеть от ресурсов оборудования: процессорного времени, пространства, занимаемого во внутренней и внешней памяти, пропускной способности каналов связи.
Зачастую один и тот же человек в разное время высказывает разные типы отношения и является то доктором Abstract, то мистером Nanosecond.
В сообществе профессиональных разработчиков есть две типичные модели мнений о производительности:
Где же истина? Разработчики часто явно излишне заботятся о микрооптимизации. Как уже отмечалось, производительность ничего не стоит, если программа некорректна. Забота о производительности должна сопоставляться с другими целями, такими как расширяемость и возможность повторного использования — ведь оптимизация может сделать программное обеспечение настолько специализированным, что оно не будет годно для повторного использования и в случаях изменения спецификации.
Все это, однако, не умаляет важности производительности, особенно в нынешнюю эпоху развития приложений массового обслуживания: никому не нравится ждать ответа от web-приложения, перегруженного запросами. Необдуманное отношение к производительности неприемлемо. Если конечная система медленно работает или громоздка, то начинают жаловаться и те, кто заявлял, что «скорость не так уж важна».
Построение программных продуктов трудно именно потому, что оно требует принятия во внимание многих различных требований, часть из которых, например корректность, — абстрактны и концептуальны, в то время как другие, например производительность, абсолютно конкретны и связаны с ограничениями на различных уровнях архитектуры.
Некоторые ученые считают разработку программного обеспечения отраслью математики, для некоторых инженеров — это отрасль прикладной технологии. На самом деле это и то, и другое. Разработчик должен соединить абстрактные понятия с их конкретными реализациями, математику корректных вычислений с временными и пространственными ограничениями, возникающими из физических законов и ограничений предметной области. Необходимость ублажать и ангелов, и чудищ — центральная проблема программной инженерии.
Возможность повторного использования | Совместимость |