Традиционно эффективными считают программы, требующие минимального времени выполнения и/или минимального объема оперативной памяти.
Особые требования к эффективности программного обеспечения предъявляют при наличии ограничений (на время реакции системы, на объем оперативной памяти и т. п.). В случаях, когда обеспечение эффективности не требует серьезных временных и трудовых затрат, а также не приводит к существенному ухудшению технологических свойств, необходимо это требование иметь в виду.
Разумный подход к обеспечению эффективности разрабатываемого про-граммного обеспечения состоит в том, чтобы в первую очередь оптимизиро-вать те фрагменты программы, которые существенно влияют на ха-рактеристики эффективности.
Для уменьшения времени выполнения некоторой программы в первую очередь следует проанализировать циклические фрагменты с большим количеством повторений: экономия времени выполнения одной итерации цикла будет умножена на количество итераций.
Не следует забывать и о том, что многие способы снижения временных затрат приводят к увеличению емкостных и, наоборот, уменьшение объема памяти может потребовать дополнительного времени на обработку. И тем более не следует «платить» за увеличение эффективности снижением технологичности разрабатываемого программного обеспечения. Исключения возможны лишь при очень жестких требованиях и наличии соот¬ветствующего контроля за качеством.
Частично проблему эффективности программ решают за программиста компиляторы.
Средства оптимизации, используемые компиляторами, делят на две группы:
Естественно, нельзя вмешаться в работу компилятора, но существует много возможностей оптимизации программы на уровне команд.