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

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001