Оптимизация кода
#1

Rто может сказать как можно оптимизировать мод с помощью функций: continue; break;
На примере кода (с коментами плз):

Code:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	 if(IsPlayerConnected(i))
       {
	   if(playerid=3)
	   {
	    SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
	   }
	 }
     }
Reply
#2

код - бред.

во первых проще сделать так:

Code:
SendClientmessage(3, COLOR_YELLOW, "TEST");
во вторых у тебя переменной playerid пытаються присвоить значение, что не возможно вданном случае, т.к нужно делать прверку ( == ), а не присваивание.
в третьих, у тебя цикл просто так пробежит, ибо ты ищешь переменную i, а сравниваешь - playerid.

я думаю тебе еще рано брейк, и континью юзать =\
Reply
#3

омг да этот код я для теста привел чтобы могли показать примеры оптимизации кода (подумаешь очепятка)... Вот другой

Code:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	 if(IsPlayerConnected(i))
       {
	   if(i != 3 )
	   {
	    SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
	   }
	 }
     }
Reply
#4

Code:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	 if(!IsPlayerConnected(i)) continue;
	  if(i == 3 )
	   {
	   SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
        break;
	   }
	 }
     }
Reply
#5

Fro1sha спасибо за коментарии и то что ничего не объяснил... И кстати твой пример работает только для 1 игрока а не для 499 как в моем.
Reply
#6

Quote:
Originally Posted by RAEN
Fro1sha спасибо за коментарии и то что ничего не объяснил...
Оно будет работать для стольки игроков сколько онлайн. Эта строчка значит "if(!IsPlayerConnected(i)) continue;", что если игрок не онлайн продолжить дальше.
if( i == 3 )
{
SendClientMessage(i, COLOR_YELLOW, "ТЕСТ");
break;
}

Это значит что если i = 3, то послать сообщение 3 иду и закончить цикл break

Quote:
Originally Posted by RAEN
И кстати твой пример работает только для 1 игрока а не для 499 как в моем.
У тебя тоже самое, только цикл будет идти до конца
Reply
#7

Quote:

И кстати твой пример работает только для 1 игрока а не для 499 как в моем.
У тебя тоже самое, только цикл будет идти до конца

Дык в моём случае, как я понял break; уже применить не получится...т.к. выполняется не для 1 игрока.
Reply
#8

break; в твоём примере - закончит выполнять цикл. без него, после наахождения ид 3 он пойдет дальше до 500.
Reply
#9

BaRRyS3R это понятно... я и говорю что её поулчается нельзя применять в циклах, где нужно применить определенное действие к нескольким игрокам (как в моём примере)... Можно применить только в примере Fro1sha
Reply
#10

break удобна тем, что когда что-то ищешь в цикле, нашел, остановил, чтобы не тратить время дальше
Reply
#11

http://forum.sa-mp.com/index.php?topic=117573.0 - про это забыли что ли?
Reply
#12

Zeex а ты языковыми разделами не ошибся?
Reply
#13

Quote:
Originally Posted by RAEN
MX_Master ага хорошая оптимизация, только я про неё слышал не оч. хорошие отзывы... Хотя если говоришь что (максимально оптимизирует), то стоит попробывать
Грань сильной оптимизации очень тонкая, поэтому вы должны точно знать, что делаете, и что ваш код в точности делает.

Приведи здесь эти отзывы, чтобы не быть голословным.


Quote:
Originally Posted by Zeex
http://forum.sa-mp.com/index.php?topic=117573.0 - про это забыли что ли?
те, кто не умеет оптимизировать стандартными средствами, тому даже самый при самый золотой плагин - не поможет
Reply
#14

Quote:
Originally Posted by JesterX
1. Попробуй использовать меньше public - функции, заменяй их на stock. Разумеется если они не под таймером и без
Чем public не угодил? zcmd вроде как раз на них работает и вроде ловчее через них . Знаю одно про них, что от них размер мода увеличивается.
Reply
#15

А размер имеет значение? (((:
Reply
#16

Quote:
Originally Posted by MX_Master
А размер имеет значение? (((:
Размер против возможности удаленно вызывать функцию.
Reply
#17

Каждый public имеет свой индекс, и вызывается именно по индексу, в отличии от остальных. Кто не верит есть функция funcidx. Логично предположить, что это затраты времени!?

zcmd - всего лишь неудачный клон dcmd, кто его использует - тот точно неудачник
Reply
#18

У меня паблики это сами колбэки и функции, которые запускаются по таймеру, остальное все - stock. Если у кого-то не так, то ваш код - не оптимизирован. Удаленно я функций не запускаю.
Reply
#19

Вопрос по теме. Есть ли смысл каждый раз при выполнении запроса к базе мускуля коннектится, и после запроса клозить?
Reply
#20

Quote:
Originally Posted by s3ap
Вопрос по теме. Есть ли смысл каждый раз при выполнении запроса к базе мускуля коннектится, и после запроса клозить?
Что то у тебя запредельно бессмысленные идеи) Закрывать коннект к базе разумно лишь в том случае если ты решил к другой приконнектиться.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)