Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    197
    Репутация:
    22 ±

    Индивидуальные таймеры

    Здравствуйте. Не так давно, почитал несколько статей по оптимизации таймеров, т.е обновления каких-то систем.Самые адекватные варианты :
    1) Создать таймер на 1 секунду, и в этой функции с помощью gettime() уже вызывать остальные системы и.т.д.
    2) Создавать каждому игроку таймер при подключении к серверу и вызывать им функцию.В эту функцию весь код, относящийся к игроку. И "Убивать" таймер, когда игрок вышел с сервера.(Много таймеров, но они не нагружают процессор, но минус в том, что время таймера нужно указывать наименьшее значение, которое используется в системах)

    Не могу протестировать самостоятельно на практике, т.к не имею онлайна.Если есть какие-то другие способы - опишите, если не трудно.
    Спасибо.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  2. #2
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    239
    Репутация:
    50 ±
    Цитата Сообщение от Profyan Посмотреть сообщение
    Здравствуйте. Не так давно, почитал несколько статей по оптимизации таймеров, т.е обновления каких-то систем.Самые адекватные варианты :
    1) Создать таймер на 1 секунду, и в этой функции с помощью gettime() уже вызывать остальные системы и.т.д.
    2) Создавать каждому игроку таймер при подключении к серверу и вызывать им функцию.В эту функцию весь код, относящийся к игроку. И "Убивать" таймер, когда игрок вышел с сервера.(Много таймеров, но они не нагружают процессор, но минус в том, что время таймера нужно указывать наименьшее значение, которое используется в системах)

    Не могу протестировать самостоятельно на практике, т.к не имею онлайна.Если есть какие-то другие способы - опишите, если не трудно.
    Спасибо.
    Я лично использую второй способ, считаю что лучше создать 1000 таймеров, которые обновляются в разное время, пусть даже 1 мс будет разницой, но они пойдут на обработку других систем/команд/информации. Чем одновременно обновлять 1000 игроков.

  3. #3
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Цитата Сообщение от Sp1ke Посмотреть сообщение
    Я лично использую второй способ, считаю что лучше создать 1000 таймеров, которые обновляются в разное время, пусть даже 1 мс будет разницой, но они пойдут на обработку других систем/команд/информации. Чем одновременно обновлять 1000 игроков.
    Большая ошибка.

  4. #4
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    239
    Репутация:
    50 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Большая ошибка.
    Ну тогда поправь меня, я представлял это себе так.

  5. #5
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    197
    Репутация:
    22 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Большая ошибка.
    А твоя какая позиция, относительно этого?



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  6. #6
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    197
    Репутация:
    22 ±
    Внятного ответа так и не дали. UP



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  7. #7
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,662
    Репутация:
    2145 ±
    В принципе возможны такие ситуации, когда сервер обрабатывает всех игроков в одном таймере и не может в это время обновлять инфу о синхронизации игроков. Из-за этого могут возникнуть "скачки" в синхронизации.
    Нормальным решением обычно будет переписать говнокод, чтобы снизить нагрузку, но в редких случаях (или в частых, зависит от лени скриптера/быдлокодера) это может не помочь - тогда есть смысл вместо цикла по всем игрокам устанавливать таймеры для обработки каждого игрока индивидуально. Но нет никакой гарантии, что таймеры распределятся достаточно ровно по времени, а не будут выполняться примерно в один момент. К тому же, добавится ещё немного нагрузки из-за планировщика таймеров.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  8. #8
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    197
    Репутация:
    22 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В принципе возможны такие ситуации, когда сервер обрабатывает всех игроков в одном таймере и не может в это время обновлять инфу о синхронизации игроков. Из-за этого могут возникнуть "скачки" в синхронизации.
    Нормальным решением обычно будет переписать говнокод, чтобы снизить нагрузку, но в редких случаях (или в частых, зависит от лени скриптера/быдлокодера) это может не помочь - тогда есть смысл вместо цикла по всем игрокам устанавливать таймеры для обработки каждого игрока индивидуально. Но нет никакой гарантии, что таймеры распределятся достаточно ровно по времени, а не будут выполняться примерно в один момент. К тому же, добавится ещё немного нагрузки из-за планировщика таймеров.
    Если я правильно понял, тот и другой вариант имеет место быть. И особой разницы между ними нет, т.к нет абсолютного преимущества ни у кого.Тогда все зависит от самого кода и общей оптимизации мода!Спасибо



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •