Костыль, который позволяет сэкономить и память, и процессорное время в ситуациях, похожих на пример из статьи
Я думал об этом написать, но, в итоге, забыл
Как по мне, можно этот алгоритм и в основной инклуд записать, добавив дополнительный тэг, через который всё будет работать. А для тех, кто боится лишний код тащить за собой из библиотек, можно сообразить макрос, что позволит включать/отключать этот алгоритм.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
C:\Users\User\Documents\GTA San Andreas User Files\SAMP\server\gamemodes\typicalrp.pwn(9698) : error 017: undefined symbol "a@YSII_Cg"PHP код:
foreach(Player, a)
{
if(player_info[a][ADMIN] > 0)
{
Iter_Random(a)
C:\Users\User\Documents\GTA San Andreas User Files\SAMP\server\gamemodes\typicalrp.pwn(9698) : error 017: undefined symbol "a@YSII_Ag"
koberman (08.06.2017)
Вообще мне кажется, что стоит сделать упор на том, как устроены функции библиотеки, дабы не обмануть себя.
В пример такого обмана можно привести итератор для игроков в зоне стрима. Казалось бы, добавили функцию добавления игрока в итератор при входе в зону стрима, удаления при выходе и при тестах получили приличный прирост к скорости, но есть одно "но": что функция добавления итератора, что функция удаления - обе содержат в себе цикл и некоторые другие вычисления, которые будут вызываться 2 раза при входе/выходе каждого игрока из/в зону стрима.
В итоге получается, что в момент вызова цикла у нас получился прирост к скорости, но взамен мы получили постоянную нагрузку, которая, при хорошем онлайне, может стать гораздо вреднее, нежели цикл с проверкой координат
Последний раз редактировалось DeimoS; 22.11.2017 в 01:16.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Alexey Melnik (21.11.2017) Daniel_Cortez (22.11.2017)
эт еще ничего)
есть такой вариант :D
PHP код:
#if FOREACH_I_PlayerVehiclesStream || FOREACH_I_VehiclePlayersStream
/*
Iter_OnVehicleStreamIn
*/
public OnVehicleStreamIn(vehicleid, forplayerid)
{
#if FOREACH_I_PlayerVehiclesStream
Iter_Add(PlayerVehiclesStream[forplayerid], vehicleid);
#endif
#if FOREACH_I_VehiclePlayersStream
Iter_Add(VehiclePlayersStream[vehicleid], forplayerid);
#endif
#if defined Iter_OnVehicleStreamIn
return Iter_OnVehicleStreamIn(vehicleid, forplayerid);
#else
return 1;
#endif
}
#if defined _ALS_OnVehicleStreamIn
#undef OnVehicleStreamIn
#else
#define _ALS_OnVehicleStreamIn
#endif
#define OnVehicleStreamIn Iter_OnVehicleStreamIn
#if defined Iter_OnVehicleStreamIn
forward Iter_OnVehicleStreamIn(vehicleid, forplayerid);
#endif
/*
Iter_OnVehicleStreamOut
*/
public OnVehicleStreamOut(vehicleid, forplayerid)
{
#if FOREACH_I_PlayerVehiclesStream
Iter_Remove(PlayerVehiclesStream[forplayerid], vehicleid);
#endif
#if FOREACH_I_VehiclePlayersStream
Iter_Remove(VehiclePlayersStream[vehicleid], forplayerid);
#endif
#if defined Iter_OnVehicleStreamOut
return Iter_OnVehicleStreamOut(vehicleid, forplayerid);
#else
return 1;
#endif
}
#if defined _ALS_OnVehicleStreamOut
#undef OnVehicleStreamOut
#else
#define _ALS_OnVehicleStreamOut
#endif
#define OnVehicleStreamOut Iter_OnVehicleStreamOut
#if defined Iter_OnVehicleStreamOut
forward Iter_OnVehicleStreamOut(vehicleid, forplayerid);
#endif
#endif
Я думаю, далеко не во всех случаях они будут бесполезны (Какой-нибудь античит, например, где нужно в радиусе проверку делать. Хотя тут нужно проводить замеры нагрузки, по хорошему, ибо может быть разная картина при маленьком и большом онлайне).
Вообще речь ведь о том, что нужно использовать всё сознательно (чувствую себя Капитаном Очевидность, хотя почему-то не все этой истины понимают). Тогда и проблем не будет
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)