Вопросы

    for(new i = 0; i < TOTALGZ; i++)

Как можно максимально оптимизировать цикл?

Поделиться сообщением


Ссылка на сообщение

6 ответов на этот вопрос

  • 0

@Tony_Cannabis, если только реализовать счетчик с декрементом. Циклы, в которых осуществляется декремент счетчика, требуют на одну машинную команду меньше. Это связано с тем, что при инкременте (i++) необходимо постоянно осуществлять сравнение i и TOTALGZ, на основе результатов которого и осуществлять либо выход из цикла, либо переход к началу цикла. В случае с декрементом (i--) в такой проверке нет необходимости, поскольку там переход осуществляется по значению арифметических флагов, которые автоматически устанавливаются после арифметических операций (в частности, инкремент и декремент).

 

for(new i = TOTALGZ-1; i >= 0; --i)

 

Поделиться сообщением


Ссылка на сообщение
  • 0

В принципе, оптимизировать нужно не само объявление цикла, а количество его итераций и то что в нем выполняется. А инкремент/декремент не так важно, больше дело вкуса кмк. Мне кстати с инкрементом нравится

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST, судя по названию, количество каких-то объектов на сервере (наверняка это какие-нибудь "зеленые зоны") особо и не оптимизируешь. При таком раскладе больше ничего не остается, кроме как забить на сокращение времени исполнения указанного участка кода или перейти к декременту.

 

Думаю, имеет смысл дополнить твои слова советом прочитать про оценку сложности алгоритмов.

Поделиться сообщением


Ссылка на сообщение
  • 0

В принципе да, согласен.

Кстати, можно ещё дополнить понятием преждевременной оптимизации. ^_^

 

Поделиться сообщением


Ссылка на сообщение
  • 0
for(new i = 0; i < (ORG_ACCESS_CMD_CAPTURE + 1); i++)


так?

for(new i = (ORG_ACCESS_CMD_CAPTURE + 1)-1; i >= 0; --i)

 

Как быть с этим?

for(new i = 0, len = strlen(player_RP_name[playerid]); i < len; i++)
for(new i = 1; i <= gPlaneCount; i++)
or(new i = 0, b = VehicleModelToPaintjobNum(GetVehicleModel(GetPlayerVehicleID(playerid))) + 1; i < b; i++)
for(new idx, i = 0; i < sizeof (TPLIST); i++)
for(new i = 0, itemid; i < sizeof (gSellGunItems); i++)
for(new i; i <= 11; i++)

Если можно пример
 

Поделиться сообщением


Ссылка на сообщение
  • 0

up, помогите с остальными циклами пожалуйста, очень важно для меня

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Sten Developer
      От Sten Developer
      Объясню всю ситуацию, пишу систему смерти игрока но она не работает. Решил по приколу написать туда обычный вывод текста SCM(playerid, COLOR_RED, "Вы умерли");
      Но однако после смерти текст не выводиться. Не работает абсолютно все. Кто знает как решить эту проблему?