При оптимизации программ часто возникают компромиссы между производительностью и другими характеристиками, потому что зачастую не существует универсального решения, которое хорошо работает во всех случаях. 12 Поэтому инженеры используют компромиссные решения для оптимизации только ключевых параметров. 1
Например, увеличение размера программного кэша улучшает производительность времени выполнения, но также увеличивает потребление памяти. 1 Другие распространённые компромиссы включают прозрачность кода и его выразительность, почти всегда ценой деоптимизации. 1 Сложные специализированные алгоритмы требуют больше усилий по отладке и увеличивают вероятность ошибок. 1
Кроме того, усилия, требуемые для достижения полностью оптимальной программы, практически всегда превышают выгоду, которая может быть от этого получена, поэтому, как правило, процесс оптимизации завершается до того, как достигается полная оптимальность. 1