ТРЕБОВАНИЯ ДЛЯ ФОРМИРОВАНИЯ КРИТИЧЕСКИ ВАЖНОГО К ПРОИЗВОДИТЕЛЬНОСТИ КОДА

8. ТРЕБОВАНИЯ ДЛЯ ФОРМИРОВАНИЯ КРИТИЧЕСКИ ВАЖНОГО К ПРОИЗВОДИТЕЛЬНОСТИ КОДА

Для критически важных к производительности участков кода необходимо соблюдать следующие требования.

8.1. ОПЕРАТОР IF

Если с помощью инструкции if проверяется несколько условий, то их следует располагать слева направо в порядке возрастания интенсивности вычислений (либо убывания вероятности выполнения условия), что позволяет использовать встроенный в компилятор оптимизатор логики вычислений по краткой схеме.

8.2. ПОРЯДОК СЛЕДОВАНИЯ ПАРАМЕТРОВ

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

Чаще всего используемые (вызывающей стороной) параметры следует указывать в начале списка, а те, которые применяются реже – в конце, т.е. снижение частоты использования параметров должно происходить в порядке слева направо.

Список входных параметров должен предшествовать списку выходных (также в порядке слева направо).

Более общие параметры следует размещать перед параметрами узкого назначения в порядке слева направо, например: SomeProc(APlanet, AContinent, ACountry, AState, ACity).

В правиле следования параметров возможны исключения, например при использовании обработчиков событий, когда параметр с именем Sender (отправитель) типа TObject часто передается первым.

8.3. ПАРАМЕТРЫ-КОНСТАНТЫ

Если параметры записи, массива, строки ShortString или типа интерфейса не модифицируются подпрограммой, то формальные параметры для этой подпрограммы следует помечать зарезервированным словом const. В этом случае компилятор сгенерирует программный код, согласно которому эти немодифицируемые параметры будут передаваться самым эффективным образом.

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

8.4. ТИПЫ ЗНАЧЕНИЙ С ПЛАВАЮЩЕЙ ТОЧКОЙ

Использовать тип Real не рекомендуется, поскольку он существует только для обратной совместимости с программами, написанными на более старых версиях языка Pascal. Хотя он совершенно аналогичен типу Double, использование его может вызвать сомнения у других разработчиков. В общем случае для работы с данными в плавающем формате следует использовать тип Double. Это как раз тот тип, под который оптимизированы инструкции процессора и шины. Кроме того, тип Double является форматом данных, определенным стандартом IEEE представления чисел с плавающей точкой. Тип Extended используйте только в тех случаях, когда для представления данных требуется диапазон больший, чем предлагает тип Double. Тип Extended определен фирмой Intel и не поддерживается в языке Java. Используйте тип Single только тогда, когда важен физический размер байта вещественной переменной (например, при использовании библиотек DLL, написанных на других языках).

8.5. ТИПЫ VARIANT И OLEVARIANT

Использовать типы Variant и OleVariant в основном не рекомендуется, однако они необходимы в тех случаях, когда типы данных становятся известны только во время выполнения программы, что зачастую характерно для приложений с доступом к базам данных и при использовании СОМ. Используйте тип OleVariant для таких СОМ-ориентированных задач, как автоматизация и элементы управления ActiveX. А тип Variant лучше применять для задач, не ориентированных на СОМ. Дело в том, что тип Variant может эффективно хранить собственные строки Delphi (подобно типу string), а тип OleVariant преобразует все строки к типу WideChar.

СОДЕРЖАНИЕ

Copyright © 2004 Вячеслав Колдовский   Специально для Delphi Plus