Сообщение от
vovandolg
Ну а то что таймеры с false будут плодиться не чего страшного, id'ы если забиваться будут так скажем?
Не будет лажи какой?
Всё можно узнать самому. Не бойся экспериментировать.
PHP код:
public OnGameModeInit()
{
new timer_id = SetTimerEx("DeimoS", 10000, 0, "i", 100);
for(new i; i < 10000; i++) SetTimerEx("DeimoS", 10000, 0, "i", 100);
printf("Первый ID - %d | Последний ID - %d", timer_id, SetTimerEx("DeimoS", 10000, 0, "i", 100));
return 1;
}
Компилируй, запусти сервер, открой диспетчер задач, найди в нём процесс сервера (samp-server.exe) и запомни где он находится. Теперь закрой консоль с сервером (выключи его), заново открой (включи) и смотри как изменяются показатели памяти.
Открыть/закрыть
Открыть/закрыть
Собственно, ели проанализировать оба скрина, можно узреть следующее:
1) ЦП: Если сравнить показания обоих скринов, то можно заметить, что таймеры сами по себе очень слабо нагружают ЦП (от 10000 таймеров нагрузка всего от 0.2% до 1% в моменты вызова функции)
Но так же хочу заметить, что больше 40% не удаётся нагрузить ЦП. Видимо, тут срабатывают какие-то ограничения со стороны самого сервера (40% я получил создав 1.000.000 таймеров. Думаю, этого хватит с лихвой), а остальная нагрузка идёт на память
2) Основной "удар" таймеров идёт как раз на память. Но, опять же, ты сам можешь посмотреть сколько памяти заняли 10000 одновременно работающих таймеров.
Но стоит таймерам выполнится, они сразу удаляются с памяти сервера и нагрузка на ЦП исчезает. А уж если тебя пугает, что сервер запоминает последний созданный ID таймера - тут ничего страшного нет, ибо так, видимо, Куй просто решил перестраховаться, дабы не париться с сортировкой таймеров (работает по принципу AUTO_INCREMENT в MySQL)