В разделе 3.8 (глава 3) уже упоминалась книга Стива Макконнелла «Завершенный код». Глава 28 этой книги посвящена стратегии оптимизации программ. В ней дается обзор вопросов производительности и подробное описание подходов к оптимизации. В главе 29 собран отличный набор правил оптимизации.
Приложение 4 настоящей книги содержит подборку правил оптимизации вместе с описанием их применения.
Экономия памяти
Некоторые из моих знакомых, прочитав этот заголовок, скажут: «Проблема устарела!» В старые злые времена программисты, говорят, и вправду были ограничены рамками своих маленьких ЭВМ, по те дни давно прошли. Новая философия проста: «Гигабайт здесь, гигабайт там — памяти хватит на всех». И в этом подходе есть своя правда — многие программисты работают на больших компьютерах и им редко приходится беспокоиться о размерах своих программ.
Но частенько долгие размышления над уменьшением объема программы оказываются чрезвычайно благотворными. Иногда появляются новые идеи, помогающие упростить программу. Уменьшение объема может иметь положительные побочные эффекты, заключающиеся в сокращении времени выполнения программы: она быстрее грузится и лучше помещается в кэш-памяти. Меньший объем данных обычно требует меньше времени па обработку. Время передачи данных по сети обычно прямо пропорционально их объему. Несмотря на то что память стоит дешево, она все равно может являться серьезным ограничением. В небольших компьютерах, управляющих игрушками и бытовой техникой, памяти обычно немного. А на больших компьютерах обычно решают сложные задачи, так что и тут может возникнуть необходимость сокращать объем программы.
Итак, мы будем помнить о важности стоящей перед нами задачи. Теперь посмотрим, какие имеются методы для ее решения.