SA-MP Forums Archive
Цикл (Вопрос) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Цикл (Вопрос) (/showthread.php?tid=487810)



Цикл (Вопрос) - Romz - 15.01.2014

Какой вариант будет быстрей работать при большом онлайне?
PHP Code:
for(new playerid 0playerid != 500playerid++) {
    if(
IsPlayerConnected(playerid)) {
        
// Код
    
}

или
PHP Code:
for(new playerid 0playerid != 500playerid++) {
    if(!
IsPlayerConnected(playerid)) continue;
    
// Код

Тестировал на сервере с онлайном 1, разницы вроде нету. Но вот интересно если будет онлайн большой какой вариант победит? Или же они одинаковы по скорости?

По идея я думаю вариант 2 должен быть быстрее так как он сразу же если игрока нету под идом начинает проверять нового, а первый должен дойти до конца хоть и не выполнит код который написан в (// Код )


Re: Цикл (Вопрос) - Stepashka - 15.01.2014

они одинаковы по скорости.


Re: Цикл (Вопрос) - Urukhay - 15.01.2014

В данном случае разницы нет, так как проверка она и в Африке проверка.
Но я знаю, по крайней мере кто то писал, что декрементация быстрее инкрементации.
То есть используйте такой вид:
pawn Code:
for(new pl = GetMaxPlayers(); pl != -1; pl--)
{
       if(!IsPlayerConnected(pl)) continue;
       // если подключен
}



Re: Цикл (Вопрос) - Stepashka - 15.01.2014

Quote:
Originally Posted by Urukhay
View Post
В данном случае разницы нет, так как проверка она и в Африке проверка.
Но я знаю, по крайней мере кто то писал, что декрементация быстрее инкрементации.
То есть используйте такой вид:
pawn Code:
for(new pl = GetMaxPlayers(); pl != -1; pl--)
{
       if(!IsPlayerConnected(pl)) continue;
       // если подключен
}
pawn Code:
for(new playerid = 0; playerid != 500; ++playerid)



Re: Цикл (Вопрос) - Mutha_X - 15.01.2014

Надо ж быть таким лолом, чтобы такое написать:
ты не поверишь, но
var--;
равносильно
var=var-1;
что в свою очередь равносильно
var=var + 0xFFFFFFFF; // вкуси перца

А вот пост- и пре- инкрементация/декрементация уже может различаться.(добавлено: Степаш о том же)


Re: Цикл (Вопрос) - Stepashka - 15.01.2014

Грубо:
Code:
var++
function(&var){
	new tempVar = var;
	var = var + 1;
	return tempVar;
}

++var
function(&var){
	var = var + 1;
	return var;
}
var--
function(&var){
	new tempVar = var;
	var = var - 1;
	return tempVar;
}

--var
function(&var){
	var = var - 1;
	return var;
}
разницу чуем?
Если так нужно посмотреть точную начинку - ищите по форуму, dimonml выкладывал код того что получается после компиляции.


ВАЖНО: Скорости не добавит, компилятор не дурак и все это приводит к наиболее оптимальному виду.


Re: Цикл (Вопрос) - Romz - 15.01.2014

Спасибо за ответы.

Stepashka, если можно закройте тему пожалуйста так как по данной теме больше вопросов у меня нету.