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: 1 Guest(s)





 , никакого смысла в GetMaxPlayers не вижу
, никакого смысла в GetMaxPlayers не вижу
	

