Вопросы

Tony_Cannabis
Свой человек
    for(new i = 0; i < TOTALGZ; i++)

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

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


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

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

  • 0
Cawfee
Великий Гуру

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

 

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

 

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


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

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

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

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

 

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

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


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

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

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

 

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


Ссылка на сообщение
  • 0
Tony_Cannabis
Свой человек
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
Tony_Cannabis
Свой человек

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

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


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

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

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

    • Korochansky
      От Korochansky
      Я рад объявить о выпуске первой публичной версии современной IDE с открытым исходным кодом под лицензией GPLv3 для разработки open.mp и SA-MP, которая отличается интеграцией с SAMPCTL, управлением зависимостями и встроенной поддержкой Git.
       
      Особенности:
      • Разработано специально для open.mp и SA-MP разработки.
      • Встроенная интеграция с SAMPCTL для создания, запуска и управления проектами.
      • Менеджер зависимостей для удобной установки и обновления серверных пакетов и компонентов.
      • Встроенная поддержка Git с индикаторами состояния репозитория и историей коммитов.
      • Маркеры истории изменений для отслеживания измененных и сохраненных строк.
      • Автоматическое сопоставление и выделение скобок
      • Предварительный просмотр цвета для значений RGBA и HEX прямо в редакторе.
      • Интеграция инструмента выбора цвета для быстрой вставки цветов в код Pawn.
      • Режим 'Разделенный редактор кода' для одновременной работы с несколькими файлами.
      • Дерево проекта, оптимизированное для крупных проектов.
      • Интегрированные панели вывода результатов сборки и консоли сервера.
      • Автоматический мониторинг и обновление файлов проектов.
      • Портативная версия (установка не требуется).
       
      В репозитории: https://github.com/daniilkorochansky/spawn
    • Margiela
      От Margiela
      устал от vs code + он часто конфликтует с маками, конкретно с версией M3(как у меня).
      имеются ли аналоги pawno на mac?