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

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


For i = 1 to 1000

x = x * 7

y =y + i

Next i

операция x = x * 7 будет выполняться 1000 раз, хотя она свободно может быть выполнена всего один раз вне цикла, как показано в следующем листинге:

x = x * 7

For i = 1 to 1000

y = y + i

Next i

Случаи, подобные первому примеру, сильно тормозят программу.

Совет #14

Чаще всего структуру выбора if лучше разделить на несколько блоков, например:

If x > 1 And y < 5 Then i = 0

можно разделить на два блока:

If x > 1 Then

If y < 5 Then i = 0

End If

В последнем случае второй If не выполняется, если первый оказался ложным. Это способствует повышению скорости программы, т.к. исключаются лишние проверки. По тем же соображениям в структуре выбора if /else после оператора else всегда пиши то условие, которое менее вероятно может возникнуть в реальной ситуации.

В выражениях с операцией && (логическое И, в C/C++), если отдельные условия независимы, например:

if (x = = 0 && y > 1)

на первое место всегда записывай то условие, которое вероятнее всего окажется ложным, т.к. в этом случае анализ выражения будет сразу прекращен и передан следующей строке, что сокращает время выполнения программы. А в выражениях с операцией || (логическое ИЛИ), например:

if (x >= 1 || y >= 1)

на первое место пиши то условие, которое вероятнее всего окажется истинным.

Совет #15

Операции с элементами массива (индексными переменными) всегда выполняются медленнее, чем с обычными переменными. Поэтому операция a*b будет выполнена гораздо быстрее, чем a[i]*b[j], при одинаковых значениях. Следовательно, если необходимо использовать один и тот же элемент массива неоднократно, лучше присвоить его другой переменной и затем использовать ее. В циклах повышение производительности при этом может достигать 80 процентов.

Совет #16

Обращение к элементам одномерного массива всегда быстрее, чем к элементам многомерного массива. Поэтому всегда старайся использовать исключительно одномерные массивы, например, вместо матрицы 5 на 5 сделай одномерный массив на 25 элементов.

Совет #17

Не используй в своей программе рисунки в формате BMP. Надеюсь, тебе не стоит объяснять, что BMP требует много ресурсов и долго перерисовывается, лучше использовать такие форматы, как JPEG, PCX, WMF и др. Старайся также применять минимальное количество цветов, например, 16-цветный рисунок занимает половину требуемой памяти для 256-цветного рисунка, а монохромный - одну четверть памяти, требуемой для 16-цветного рисунка. Так, если у тебя рисунок содержит только белый и черный цвета, то правильным будет сохранить его как монохромный.

Совет #18

Если твоя прога долго грузится, используй заставку. Это, конечно, скорости программе не прибавит, но юзеру будет казаться, что она грузится быстрее. Только заставка должна быть простой, чтобы еще больше не тормозила загрузку. Пример простых заставок можно посмотреть в программах MS Office (как ни странно!).

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

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