20 советов по созданию настоящего Х-кода

Спецвыпуск Xakep, номер #014, стр. 014-048-3


Совет #8

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

1) присваивание;

2) сложение/вычитание;

3) умножение;

4) деление;

5) возведение в степень и др.

Для того чтобы перейти от сложных операций к более простым, сокращай выражения, например, вместо x = a*c + b*c + a*d + b*d правильнее написать x = (a + b)*(c + d). Деление заменяй умножением, например, вместо x = (a + b)/2 пиши x = (a + b)*0,5. Если тебе нужно возвести число в степень, лучше использовать произведение этого числа на само себя. Это будет гораздо быстрее, чем операция ^ в VB или функция pow(x, y) в C/C++. Например, выражение y = x * x * x будет выполнено в 7 раз быстрее, чем y = x ^ 3. Если степень высокого порядка, то ее лучше разбить с помощью временных переменных, например:

tmp = x * x * x

y = tmp * tmp * x

Это будет выполнено в 3 раза быстрее, чем x ^ 7.

Совет #9

Если позволяет твой язык программирования, используй сокращенные операции. Например, такие как в C/C++: инкремент ++ (увеличение на 1), декремент -- (уменьшение на 1), а также операции присваивания, типа += (выражение x += 3 то же самое, что x = x + 3) и т.п. Сокращенные операции выполняются быстрее, кроме того, они позволяют быстрее набивать программу, и компилятор быстрее ее компилирует.

Совет #10

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

Совет #11

Если в твоем коде есть константы, которые не меняются на протяжении выполнения всей программы, - не делай лишние присваивания. Например:

int x = 5, y = 7;

if (a < x && b < y)

c = x;

лучше написать так:

if (a < 5 && b < 7)

c = 5;

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

Совет #12

Избегай повторные вычисления одних и тех же выражений, достаточно сделать это один раз и в дальнейшем использовать полученное значение. Например:

if (a > x * 3)

b = x*3 + (1 + x*3)/(100 + x*3);

for (int i = 1; i <= x*3; i++)

c = i + b*x*3;

правильнее написать так:

y = x * 3;

if (a > y)

b = y + (1 + y)/(100 + y);

for (int i = 1; i <= y; i++)

c = i + b*y;

Это увеличивает скорость выполнения программы.

Совет #13

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

Назад на стр. 014-048-2  Содержание  Вперед на стр. 014-048-4