Таймеры
#1

Добрый вечер. Хотелось бы спросить про таймеры, а точнее глобальный таймер.
Если постоянно создавать отдельный таймер это как то повлияет на скорость работы мода? или же лучше создать один глобальный таймер на 100 мс?
Reply
#2

А в этом таймере что вы хотите вставлять?
Если цикл игроков, и тогда ничего нормального не выйдет
Reply
#3

Циклы в него не планирую вовсе.
Reply
#4

Хотя, не таймеры ведь делают нагрузку на мод, а код который в них содержится, т.е получается без разницы сколько таймеров? даже если поместить весь код в один таймер то нагрузки меньше не станет?
Reply
#5

да, верно
Reply
#6

Quote:
Originally Posted by AlexeyTrekkkk
Посмотреть сообщение
даже если поместить весь код в один таймер то нагрузки меньше не станет?
Можно будет на другом лопухнуться, если время работы кода в таймере будет больше чем время повтора этого же таймера, то код будет выполняться не полностью.
Reply
#7

Quote:
Originally Posted by Makar93
Посмотреть сообщение
Можно будет на другом лопухнуться, если время работы кода в таймере будет больше чем время повтора этого же таймера, то код будет выполняться не полностью.
Скорее сервер повиснет вообще
Но код выполняющийся постоянно, который выполняется за 100 мсек, это уже ненормально
Reply
#8

Quote:
Originally Posted by Jon_De
Посмотреть сообщение
Скорее сервер повиснет вообще
Но код выполняющийся постоянно, который выполняется за 100 мсек, это уже ненормально
У меня был код, который выполнялся 10 минут - и ничего - всё нормально.
Reply
#9

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
У меня был код, который выполнялся 10 минут - и ничего - всё нормально.
А у меня был запрос в MySQL который выполнялся пол часа. У кого ещё какая длина?!

PS сарказм если что, давайте писать по делу, то что у вас был долги код это ваша проблема и она не поможет человеку ни чем.
Reply
#10

Ну я думал так, что если взять обычный таймер и паблик к примеру SetTimer("timer", 100, flase);
т.е паблик timer вызывается каждые 100 мс. Т.е мы сможем с помощью паблика имитировать таймер на время кратное 100 мс. К примеру 10 секунд = 10 000 мс. Значит надо повторить паблик 10 000 / 100 раз. Для этого я создаю глобальную переменную new timer10s;
В итоге должно получится как то так.
public timer()
{
new timer10s = 0;
if (++timer10s >= (10000 / 100))
{
timer10s = 0;
/*
Код
*/
}}
Так вот сам вопрос, по нагрузке будет ли отличаться стандартный метод испльзования таймеров т.е к каждой "функции" отдельный таймер или же лучше метод указаный выше?
Reply
#11

Quote:
Originally Posted by AlexeyTrekkkk
Посмотреть сообщение
Ну я думал так, что если взять обычный таймер и паблик к примеру SetTimer("timer", 100, flase);
т.е паблик timer вызывается каждые 100 мс. Т.е мы сможем с помощью паблика имитировать таймер на время кратное 100 мс. К примеру 10 секунд = 10 000 мс. Значит надо повторить паблик 10 000 / 100 раз. Для этого я создаю глобальную переменную new timer10s;
В итоге должно получится как то так.
public timer()
{
new timer10s = 0;
if (++timer10s >= (10000 / 100))
{
timer10s = 0;
/*
Код
*/
}}
Так вот сам вопрос, по нагрузке будет ли отличаться стандартный метод испльзования таймеров т.е к каждой "функции" отдельный таймер или же лучше метод указаный выше?
О какой нагрузке вообще речь может идти? Или вы каждый тик замеряете? Даже увеличение stream_rate на 10 мсек принесет больше пользы (если это так назвать можно), а разницы заметно не будет в игре.
Reply
#12

Хорошо, понял, спасибо за ответ, это я и хотел услышать.
Reply
#13

Quote:
Originally Posted by AlexeyTrekkkk
Посмотреть сообщение
Добрый вечер. Хотелось бы спросить про таймеры, а точнее глобальный таймер.
Если постоянно создавать отдельный таймер это как то повлияет на скорость работы мода? или же лучше создать один глобальный таймер на 100 мс?
Не советую делать на 100 мс общий таймер, таймер может не успеть выполниться в какой-то момент и CPU начнет перегружаться, на сервере лаги будут ужасные. 100 мс можно делать в единичных таймерах, например -

PHP код:
SetTimerEx("KickFix"100false"i"playerid);
forward KickFix(playerid);
public 
KickFix(playerid)
{
    
Kick(playerid);
    return 
true;

Reply
#14

Quote:
Originally Posted by iNoob
Посмотреть сообщение
Не советую делать на 100 мс общий таймер, таймер может не успеть выполниться в какой-то момент и CPU начнет перегружаться, на сервере лаги будут ужасные. 100 мс можно делать в единичных таймерах, например -

PHP код:
SetTimerEx("KickFix"100false"i"playerid);
forward KickFix(playerid);
public 
KickFix(playerid)
{
    
Kick(playerid);
    return 
true;

Стоит повторяющийся глобальный таймер для просчётов итд. Не разу за 10 месяцев работы сервера не замечал подобного.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)