Правило 17 Особенности оптимизации программ на языке Turbo Pascal

Правило 16.

Правило 15.

Правило 14.

Особенности оптимизации программ на языке Turbo Pascal

Правило 13.

Желательно избегать неоправданного разбиения операции сравнения на две компоненты.

Очевидно, что (студенческий пимер)

IF (I < 0 or I > 0) then J = J + 2

хуже, чем

IF (I <> 0) then J = j + 2.

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

Модель памяти определяет возможность вызова процедуры из раличных частей программы: если используется ближняя модель, вызов возможен только в пределах 64 Кбайт; при дальней модели вызов возможен из любого сегмента. Ближняя модель экономит один байт и несколько микросекунд на каждом вызове процедуры.

Ближняя адресация осуществляется директивой компилятора {$f-} и установлена по умолчанию.

Т.е. сразу за заголовком процедуры или функции желательно использовать стандартную директиву Near.

Например, Function(a,b:real): real; near;

Используя директиву компилятора {$a+}, данные программы можно располагать с чётных адресов, что увеличивает быстродействие и размер программы. По умолчанию используется ключ {$a-}.

В компиляторе языка Turbo Pascal возможно полное или укороченное вычисление логических выражений.

При использовании укороченного вычисления производится проверка логического выражения до тех пор, пока не станет известно значение всего выражения, т.е. если один из операндов операции OR равен TRUE или первый операнд операции AND равен FALSE.

Для этого служит ключ {$b-}, который используется по умолчанию.

Т.Е.

1) в выражении a AND b, если a = False, то значение b не вычисляется

2) в выражении a OR b, если a = True, то значение b не вычисляется.

При полном вычисляется все выражение.

Рекомендуется использовать короткое вычисление.

Кроме того, вычисление по короткой схеме делает возможным такие конструкции, которые в противном случае были бы недопустимы, например

IF(J<>0) AND ((2/J)>X) THEN....

WHILE (I<=LENGTH(S)) AND (S[I]<>'') DO...

В обоих случаях, если результатом первого вычисления будет значение FALSE,вычисление второго выражения не выполняется (а если попыталось бы, то была бы ошибка).

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

IF(LogFunc1(X) AND LogFunc2(X) THEN...

где LogFunc1 и LogFunc2 кроме анализа значения X, производят модификацию данных или выдачу сообщений.

В логических выражениях следует использовать либо операцию AND, либо операцию OR, причём первым следует располагать условие, приводящее к более быстрому вычислению выражения в целом: для операции OR - это наиболее вероятное условие; для операции AND - наименее вероятное.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: