01.12.2015, 16:13
Quote:
Для ежесекундных операций с игроками лучше будет для каждого игрока создавать отдельный таймер или один таймер и пробегаться по всем игрокам?
|
1 вариант: Цикл
Из плюсов то, что таймер всего один, но есть цикл, присутствие которого уже не есть хорошо, особенно если много слотов. Пробегаться он будет всегда по всем слотам (а если на сервере 1000 слотов, а игроков всего 8 человек? Итераций 1000, а нужно-то всего 8). Конечно можно это обойти через GetPlayerPoolSize или лучше foreach - это сократит количество итераций до минимума в ситуации с 8 игроками, но на полном сервере это уже абсолютно никак не поможет.
2 вариант: Индивидуальный таймер для каждого
В этом случае никакие циклы уже мешать не будут, но, предположим, у нас есть популярный сервер с 1000 игроков онлайн - тут уже выгода от них, по моему, не очень большая. Вызываться они будут с очень частой периодичностью, и лучше ли они цикла в данной ситуации, над этим ещё можно поспорить.
С другой стороны, каждый игрок играет в среднем от 15 до 30 минут например. И для каждого при входе таймер создаётся, при выходе удаляется. Иды таймеров становятся всё больше, и если долго не делать рестарт, то возможно значения идов таймеров могут достигнуть какого-то порога (хотя в этом я не уверен).
Имхо, если на сервере играет мало людей, лучше делать отдельный таймер для каждого, а если сервер забит и людей довольно много, то наверное цикл.