Обратите внимание, что последующее достаточно общее, так как вопрос является весьма фундаментальным.
В реальном мире программисты склонны смотреть на эффективность на стадии проектирования, как правило, в следующих случаях:
- проблема их решения является критичной по времени (например, видео-рендеринга и обработки изображений)
- количество данных, которые они обрабатывают, слишком велико (например: анализ миллиардов строк из фида)
Иначе они в основном используют методы и принципы проектирования «с полки».
В некоторых случаях код-обзор ловит бедных реализаций от неопытных разработчиков и существует значительное количество переделок и обучения :)
Иногда некоторые из существующих реализаций производительности интенсивно и они так в силу различных причин (плохое знания, временные ограничения, «в то время это была хорошая идея», непонятное понимание проблемы и т. д.). В таких случаях часто происходит посмертное исправление реализации, и в этих случаях также существуют более эффективные варианты реализации и эффективности.
отметить также известные цитаты из Кнут:
Мы должны забыть о небольших эффективности, скажем, около 97% времени: преждевременная оптимизация есть корень всех зол. Тем не менее, мы не должны упустить наши возможности в этой критической 3%
и
В устоявшихся инженерных дисциплин улучшение на 12%, легко получить, никогда не считается маргинальной, и я считаю, что та же точка зрения должна превалировать в программном обеспечении инженерные
Таким образом, для обеспечения баланса, сложности и оптимизации времени требуется баланс. Для получения дополнительной информации прочтите wiki link.
Я использую его для выбора между коллекциями. В остальное время я измеряю. – duffymo
StackOverflow предназначен для вопросов о проблемах программирования. Попробуйте программисты StackExchange. –
Только когда это имеет значение. И (удивительно) это часто НЕ имеет значения. –