04.08.2011, 12:40
Оптимизация кода
04.08.2011, 13:22
так и не создастся, а я то думал... Как всегда, пойду лесом.
04.08.2011, 13:32
Нельзя создать переменную с динамическим размером, это вам не PHP.
05.08.2011, 11:46
05.08.2011, 12:58
07.08.2011, 09:55
Немного странный вопрос, но все же рискну задать.
Правильнее использовать GetMaxPlayers() или MAX_PLAYERS?
Правильнее использовать GetMaxPlayers() или MAX_PLAYERS?
07.08.2011, 14:21
07.08.2011, 14:40
Так и сделал, просто GetMaxPlayers разве не определяет кол-во игроков онлайн?
Не всегда же слоты забиты до отказа. )
Не всегда же слоты забиты до отказа. )
07.08.2011, 14:51
07.08.2011, 14:58
Благодарю, вопрос иссяк. =)
07.08.2011, 15:33
храните все онлайн ИДы в начале массива, который должен быть размером MAX_PLAYERS
07.08.2011, 15:40
07.08.2011, 18:44
Потому что выполнить придется не 500 операций из которых большинство будет бесполезных проверок if(!IsPlayerConnected(i)) continue; кстати тотнимающих время, а только необходимое число тех кто в онлайне.
07.08.2011, 18:57
Quote:
Потому что выполнить придется не 500 операций из которых большинство будет бесполезных проверок if(!IsPlayerConnected(i)) continue; кстати тотнимающих время, а только необходимое число тех кто в онлайне.
|
Код:
new count = GetTickCount(); for ( new i; i < 1000000; i ++ ) { if (IsPlayerConnected(playerid)) {} } printf("IsPlayerConnected: %d", GetTickCount() - count);
[22:55:26] IsPlayerConnected: 138
07.08.2011, 19:25
А теперь сделай так:
if (!IsPlayerConnected(i)) continue;
И сравни это скажем с циклом в котором в пять раз меньше итераций и вообще нет этой проверки.
Как по твоему зачем народ изобрел foreach, наверно не с пустого места было решено, а давайте хранить в массиве ИД только тех кто в онлайне, а не бегать по всем 500 ячейкам.
if (!IsPlayerConnected(i)) continue;
И сравни это скажем с циклом в котором в пять раз меньше итераций и вообще нет этой проверки.
Как по твоему зачем народ изобрел foreach, наверно не с пустого места было решено, а давайте хранить в массиве ИД только тех кто в онлайне, а не бегать по всем 500 ячейкам.
07.08.2011, 19:29
Железо может быть разное. Например я на своем ноуте с пентиум 4 могу показать плохие результаты, а на настольном с атлоном x2 результаты будут выше в несколько раз, а на core i7 вооще, не успеешь глазом маргнуть. Но суть не в этом. Храни иды в массиве, или, даже лучше, в бинарных деревьях (если данных, по которым будешь искать, много)
07.08.2011, 20:59
Quote:
А теперь сделай так:
if (!IsPlayerConnected(i)) continue; И сравни это скажем с циклом в котором в пять раз меньше итераций и вообще нет этой проверки. |
Код:
new count = GetTickCount(); for(new i; i < 1000000; i ++) { if(!IsPlayerConnected(100)) continue; } printf("IsPlayerConnected: %d", GetTickCount() - count);
IsPlayerConnected: 95
IsPlayerConnected: 98
А как по-твоему работают сервера с онлайном 300-500 без единого лага? При онлайне 500 никакой foreach как таковой и не требуется. Я лично делаю всё не зависимо от онлайна, но так, чтобы даже если будет 500 игроков сервер не лагал
08.08.2011, 04:09
Quote:
Код:
new count = GetTickCount(); for(new i; i < 1000000; i ++) { if(!IsPlayerConnected(100)) continue; } printf("IsPlayerConnected: %d", GetTickCount() - count); IsPlayerConnected: 95 IsPlayerConnected: 98 А как по-твоему работают сервера с онлайном 300-500 без единого лага? При онлайне 500 никакой foreach как таковой и не требуется. Я лично делаю всё не зависимо от онлайна, но так, чтобы даже если будет 500 игроков сервер не лагал |
Пример из одной моей системы: цикл прогоняет 1500 итераций 2 раза в секунду, в каждой из этих итераций проверяются все игроки. Теперь помнож свои "незначительные" задержки на 3000 и получеш насколько эта проверка будет делать мне лаг ежесекундно.
08.08.2011, 11:30
Quote:
ты мыслишь в пределах одного цикла.
Пример из одной моей системы: цикл прогоняет 1500 итераций 2 раза в секунду, в каждой из этих итераций проверяются все игроки. Теперь помнож свои "незначительные" задержки на 3000 и получеш насколько эта проверка будет делать мне лаг ежесекундно. |
08.08.2011, 11:52
« Next Oldest | Next Newest »
Users browsing this thread: 2 Guest(s)