Составители:
Рубрика:
Приложение
Оптимизация программ на языке С++
Уменьшение времени доступа в память.
1. Групповое присваивание:
использование а=b=1;
вместо а=1; b=l;
2.
Использование оператора присваивания в условии:
if ((c=getchar())!=EOF)
{ }
вместо
c=getchar();
if (c!=EOF)
{...}
3.
Использование условного оператора:
а=(х0)?х:х+1;
вместо
if (x0)
а=х;
else a=x+1;
4.
Использование операции сдвига при умножении на степень 2:
i=(j<<3)+j; // j*8+j
вместо
i=j*9;
5.
Использование операций ++, −−, +=, −=:
mas [i+2] ++;
вместо
mas [i+2] =mas [i+2] +1;
Преобразования типов. Следует отметить, что наиболее быстро выполняются
операции, не связанные с преобразованием типа. Например, аргументы вещественного
типа в выражениях при вычислении преобразуются в тип double. Поэтому, если они уже
описаны как double, то программа будет работать быстрее. Также необходимо обратить
внимание на операции присваивания для типов разной длины (long и int, char и int). Реа-
188
Приложение Оптимизация программ на языке С++ Уменьшение времени доступа в память. 1. Групповое присваивание: использование а=b=1; вместо а=1; b=l; 2. Использование оператора присваивания в условии: if ((c=getchar())!=EOF) { } вместо c=getchar(); if (c!=EOF) {...} 3. Использование условного оператора: а=(х0)?х:х+1; вместо if (x0) а=х; else a=x+1; 4. Использование операции сдвига при умножении на степень 2: i=(j<<3)+j; // j*8+j вместо i=j*9; 5. Использование операций ++, −−, +=, −=: mas [i+2] ++; вместо mas [i+2] =mas [i+2] +1; Преобразования типов. Следует отметить, что наиболее быстро выполняются операции, не связанные с преобразованием типа. Например, аргументы вещественного типа в выражениях при вычислении преобразуются в тип double. Поэтому, если они уже описаны как double, то программа будет работать быстрее. Также необходимо обратить внимание на операции присваивания для типов разной длины (long и int, char и int). Реа- 188