Question

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

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

Share this post


Link to post

6 answers to this question

  • 0

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

 

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

 

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

 

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

Share this post


Link to post
  • 0

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

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

 

Share this post


Link to post
  • 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++)

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Lt.Andrew
      By Lt.Andrew
      Здравствуйте! Можете пожалуйста сказать, можно ли сделать так, чтобы офицер мог открывать и закрывать доступ к арсеналу ВЧ ?

      Тоесть, если офицер закрыл доступ, то если кто-нибудь подойдёт он не сможет взять оружие и ему в чат писалось бы например: "Арсенал сейчас закрыт. Для получения вооружения обратитесь к своему командиру."
       
      А если открывает, то соответственно при вставании на пикап - появляется диалог с выбором оружия.
       
       
      Или можно сделать также с доступом, но только уже, чтобы оружие мог брать любой военнослужащий, но закрывалась сама дверь в оружейную ?