Инициализация объектов данных

Оптимизация, не зависящая от компилятора

Некоторые приемы оптимизации программ

 

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

Оптимизацией называется такое преобразование исходного текста программы, при котором результат ее выполнения остается неизменным, но улучшаются ее некоторые характеристики. Эти характеристики зависят от выбранных критериев оптимизации. Основными критериями оптимизации являются:

время выполнения программы;

затраты оперативной памяти;

размер исходного кода.

При оптимизации программы необходимо выявить те фрагменты исходного текста, которые являются «основными потребителями» ресурса, а затем перепрограммировать эти фрагменты, решая задачу оптимизации.

Обратимся к проблеме оптимизации программы по затратам процессорного времени. Такая оптимизация особенно важна для расчетных программ, в которых большой удельный вес имеют математические вычисления.

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

Перечислим некоторые приемы, которые может использовать программист для написания исходного текста программы.

 

Во многих программах какую-то часть объектов данных необходимо инициализировать, т.е. присваивать им начальные значения. Такое присваивание выполняется либо в самом начале программы, либо, например, в начале цикла. Правильная инициализация объектов данных позволяет сэкономить драгоценное процессорное время. Так, например, если речь идет об инициализации массивов, использование цикла, скорее всего, будет менее эффективным, чем объявление этого массива типизированной константой.