Jump to content

Intrebari legate de optimizare [SA:MP]


max

Recommended Posts

Salut de ceva timp ma tot uit pe forum la chestii legate de optimizare si gasesc doar diferite topicuri din 2018/2019 si ma gandesc ca in ziua de azi exista metode mult mai bune pentru a optimiza deferite chestii intr-un gamemode intrebarea mea la voi este ce inseamna "Optimizarea" pentru uni din voi si care credeti ca sunt chestiile necesare de facut la un gamemode pentru a il optimiza

  • Haha 1
Link to comment
Share on other sites

Eu personal iti recomand sa citesti acele topic-uri, nu este o diferenta dintre ce este acum si atunci. De ce? Pentru ca Pawn nu a mai fost actualizat de ani de zile, deci nimic nou nu a aparut in limbaj sau VM care interpreteaza AMX-ul.

Eu iti recomand sa citesti si articole mai vechi, tot din acelasi motiv, dar poate sa le citesti "cu un gram de sare" din cauza ca nu prea se stia asa bine cum merge AMX-ul / server-ul de SA-MP acum 10-15 ani.

Pe langa asta, din ce imi aduc eu aminte chestii simple de optimizare ar fi sa:

  • Sa folosesti YSI pentru vectori dinamici.
  • Chestii generale de programare, e.g. daca vrei sa reinitializezi un sir de caractere poti sa pui primul caracter pe NULL, nu trebuie sa setezi tot sirul pe 0 / NULL.

P.S: Nu stiu cum este open.mp, dar poate e la fel.

  • Like 1
Link to comment
Share on other sites

Salut, @max

Sfatul meu ar fi sa optimizezi query urile, în primul rand, documentează te când sa folosești mysql pquery și tquery, ambele fac aceleași lucruri, dar pe căi diferite, mai explicit, dacă ai 100 query neprocesate prin tquery, următorul tquery, va trebui sa aștepți sa și vina rândul pentru a fi trimis, pqeury face la fel, însă, cu 100 query uri trimise cu tquery și unul cu pquery, cel cu pquery se va trimite instant, deoarece tquery  trimite query urile pe linia 1 și pquery pe linia 2, sper ca ai înțeles, îți recomand pquery doar la selectarea din baza de date, restul cu tquery, exclus mysql query.

Alte variante ar fi după părerea mea, sa renunti la YSI, nu ti sunt de folos, cum spun unii, folosește callback urile normale, nu inline, ai în foreach ul standalone iteratori inclusi, asigura te ca nu ai foarte multe căutări în toți jucătorii(asta fiind o micro optimziare), vreau sa spun, de exemplu: foreach(new a : Player), bine, acum dacă ai o căutare- doua în toți jucătorii, care se executa odata la 10 minute sa spun asa, n ar fi o buba, însă la restul comenzilor/funcțiilor unde necesita loop pe o categorie de jucători și sunt apelate des, asigura te ca nu e o căutare în toți jucătorii.

Asigura te ca nici la OnPlayerText nu ai o căutare în toți jucătorii, poți folosi OnPlayerStreamIn + un iterator, la fel și la foreach ul din playerii unui vehicul, care se folosește des la comanda (car whisper(/cw)), un iterator învârtit prin OnPlayerStateChange, de asemenea asigura te ca și timerele sunt gândite, nu puse aiurea, în rest, totul e ok, folosește cât mai multe variabile globale, o sa ți crească size ul, dar nu e o paguba mărimea amx ului, nu defini macro uri aiurea ce poți face cu funcțiile native, exemplu... #define SCM SendClientMessage, macrourile de tipul acesta, n au ce cauta în gm ul tău. Pentru apelarea unor funcții eu îți recomand să te folosești de CallLocalFunction/CallRemoteFunction dacă ai și gm ul modular, în rest, nu mi mai vine nimic în cap, dacă ai ceva în cod și nu știi ce i ai putea face sa l optimizezi, un mesaj în privat sau pe discord: unkn0wn#8408

Spor!

Edited by AlexxAdv
  • Like 1
  • Upvote 3
Link to comment
Share on other sites

On 1/24/2023 at 8:27 PM, WopsS said:

Eu personal iti recomand sa citesti acele topic-uri, nu este o diferenta dintre ce este acum si atunci. De ce? Pentru ca Pawn nu a mai fost actualizat de ani de zile, deci nimic nou nu a aparut in limbaj sau VM care interpreteaza AMX-ul.

Eu iti recomand sa citesti si articole mai vechi, tot din acelasi motiv, dar poate sa le citesti "cu un gram de sare" din cauza ca nu prea se stia asa bine cum merge AMX-ul / server-ul de SA-MP acum 10-15 ani.

Pe langa asta, din ce imi aduc eu aminte chestii simple de optimizare ar fi sa:

  • Sa folosesti YSI pentru vectori dinamici.
  • Chestii generale de programare, e.g. daca vrei sa reinitializezi un sir de caractere poti sa pui primul caracter pe NULL, nu trebuie sa setezi tot sirul pe 0 / NULL.

P.S: Nu stiu cum este open.mp, dar poate e la fel.

ysi nu are vectori dinamici.

  • Sad 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.