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=613380)



Оптимизация - FaGo - 27.07.2016

Здравствуйте! решил немного оптимизировать игровой мод,к примеру транспорт

какой метод лучше всего выбрать?


первый
PHP код:
new mashina[10];
if(
newcar >= mashina[0] && newcar <= mashina[9])
{
    if(
blabla(playerid)) return SCM(playeridCOLOR_GREY"error");
    
RemovePlayerFromVehicleAc(playerid);
}
mashina[0] = AddStaticVehicleEx(--------); 
mashina[1] = AddStaticVehicleEx(--------); 
mashina[2] = AddStaticVehicleEx(--------);
mashina[3] = AddStaticVehicleEx(--------);
mashina[4] = AddStaticVehicleEx(--------);
mashina[5] = AddStaticVehicleEx(--------);
mashina[6] = AddStaticVehicleEx(--------);
mashina[7] = AddStaticVehicleEx(--------);
mashina[8] = AddStaticVehicleEx(--------);
mashina[9] = AddStaticVehicleEx(--------); 
второй
PHP код:
new mashina[2];
if(
newcar >= mashina[0] && newcar <= mashina[1])
{
    if(
blabla(playerid)) return SCM(playeridCOLOR_GREY"error");
    
RemovePlayerFromVehicleAc(playerid);
}
mashina[0] = AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
mashina[1] = AddStaticVehicleEx(--------); 
Экономим ячейки,что происходит можете описать?


Re: Оптимизация - eakwarp - 27.07.2016

А оптимизация где? Вы сэкономили аж целых 8 байт оперативной памяти. Зачем?


Re: Оптимизация - ZiGGi - 27.07.2016

Quote:
Originally Posted by eakwarp
Посмотреть сообщение
А оптимизация где? Вы сэкономили аж целых 8 байт оперативной памяти. Зачем?
Не 8 байт, а 8 ячеек, что равно 64 байтам, но суть не в этом.

Оба способа плохие, ибо ID транспорта не обязательно идут по порядку. Лучше это реализовать как-то так:
PHP код:
enum e_MASHINA_INFO {
    
e_mModel,
    
Float:e_mCoordX,
    
Float:e_mCoordY,
    
Float:e_mCoordZ,
    
e_mColor1,
    
e_mColor2,
    
e_mTime,
    
e_mID,
}
new 
gMashinas[][e_MASHINA_INFO] = {
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------}
};
stock IsPlayerInMashina(playerid)
{
    new 
vehicleid GetPlayerVehicleID(playerid);
    for (new 
isizeof(gCars); i++) {
        if (
vehicleid == gMashinas[i][e_mID]) {
            return 
1;
        }
    }
    return 
0;
}
for (new 
isizeof(gCars); i++) {
    
gMashinas[i][e_mID] = AddStaticVehicleEx(gMashinas[i][e_mModel],
                                             
gMashinas[i][e_mCoordX],
                                             
gMashinas[i][e_mCoordY],
                                             
gMashinas[i][e_mCoordZ],
                                             
gMashinas[i][e_mColor1],
                                             
gMashinas[i][e_mColor2],
                                             
gMashinas[i][e_mTime]);

Этот способ гарантирует то, что в обработку не попадёт лишний транспорт.


Re: Оптимизация - FaGo - 27.07.2016

Quote:
Originally Posted by eakwarp
Посмотреть сообщение
А оптимизация где? Вы сэкономили аж целых 8 байт оперативной памяти. Зачем?
Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Не 8 байт, а 8 ячеек, что равно 64 байтам, но суть не в этом.

Этот способ гарантирует то, что в обработку не попадёт лишний транспорт.
Спасибо за советы


Re: Оптимизация - OKStyle - 27.07.2016

Первый годный вариант, но при увеличении машин нужно увеличивать переменную, второй вариант лишён этой проблемы, но бывают "проскакивания", поэтому вариант Зиги вполне себе. Ах да, в этом варианте ещё можно сделать получение цвета тачек, что нельзя сделать в других.


Re: Оптимизация - FaGo - 27.07.2016

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Первый годный вариант, но при увеличении машин нужно увеличивать переменную, второй вариант лишён этой проблемы, но бывают "проскакивания", поэтому вариант Зиги вполне себе. Ах да, в этом варианте ещё можно сделать получение цвета тачек, что нельзя сделать в других.
спасибо за совет