Составители:
Рубрика:
Приложение
Оптимизация программ на языке С++
Уменьшение времени доступа в память.
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
