TheGodfather Posted June 16, 2022 Report Share Posted June 16, 2022 Salut, merita ca un gamemode sa aiba 2 limbi? Cam cat ar afecta performanta acea verificare de limba in fiecare loc unde exista un mesaj? Quote Link to comment Share on other sites More sharing options...
1 Banditul Posted June 16, 2022 Report Share Posted June 16, 2022 O revizitare a raspunsului oferit mai devreme care din pacate si din greseala mea a omis o multime de informatii. Promit sa corectez in aceasta revizie. https://pastebin.com/4vLDGKWm Rezultat Un if: 0 ms 1 milion if: 16 ms 1 mesaj formatat si trimis: 0 ms 1 milion mesaje formatate si trimise: 164 ms Un if cu mesaj formatat&trimis: 0 ms 1 milion if/else cu mesaje formatate&trimise: 173 ms Testat pe un Intel i5-4460 3.4GHz destul de mult sub procesoarele care se regasesc pe servere la momentul actual. Dupa cum se vede chiar daca faci 1 milion de verificari una dupa alta viteaza procesari este neglijabila dar doar daca valoarea corespunde cu primele cazuri, in momentul in care adaugam mai multe cazuri sa fie verificate si valoarea variabilei este mai 'mare' cu cat devine mai lent caz in care folosirea un switch este benefica. 1 milion if, test = 1: 19 ms 1 milion if, test = 2: 24 ms ...... 1 milion if, test = 11: 82 ms tickCount = tickcount(); for (new i = 0; i < 1000000; i++) { if (test == 1) {} else if (test == 2) {} else if (test == 3) {} else if (test == 4) {} else if (test == 5) {} else if (test == 6) {} else if (test == 7) {} else if (test == 8) {} else if (test == 9) {} else if (test == 10) {} else if (test == 11) {} else {} } printf("1 milion if, test = 11: %i ms", tickcount() - tickCount); Cat despre switch 1 milion switch, test = 1: 0 ms 1 milion switch, test = 2: 0 ms ......... 1 milion switch, test = 11: 0 ms tickCount = tickcount(); for (new i = 0; i < 1000000; i++) { switch (test) { case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; case 8: break; case 9: break; case 10: break; case 11: break; } } printf("1 milion switch, test = 11: %i ms", tickcount() - tickCount); Concluzie pentru sectiunea asta: Cazul in care planuiesti sa adaugi poate mai mult de 10-20 limbi cel mai bine are fi sa folosesti swtich pentru a face verificarea limbi. Pentru cazul acetui de avea 2 e irelevant ce folosesti. Facand concluzia de mai devreme am rescris testele cu switch Un switch/2 cases cu mesaj formatat&trimis: 0 ms 1 milion switch/2 cases cu mesaje formatate&trimise: 172 ms 1 milion switch/10 cases/test = 11 cu mesaje formatate&trimise: 175 ms Si cele 3 teste https://pastebin.com/A7bYN7h9 (devenea prea mare raspunsul) Revenind totusi la intrebare. Este atat de neglijabila diferenta de performanta incat nu merita sa iti bati capul, as zice ca diferenta e cat se poate de a fi aproape inexistenta. Sper ca am raspuns de data aceasta cu mult mai bune informatii. Quote Link to comment Share on other sites More sharing options...
0 TheGodfather Posted June 16, 2022 Author Report Share Posted June 16, 2022 6 minutes ago, Banditul said: #include <a_samp> main() { new bool:test = true; new nowTime = gettime(); printf("Timestamp now: %i", nowTime); for (new i = 0; i < 1000000; i++) { if (test) { SendClientMessage(0, -1, "Mesaj"); test = false; } else { SendClientMessage(0, -1, "Mesaj"); test = true; } } new elapsedTime = gettime() - nowTime; printf("Elapsed time: %i", elapsedTime); printf("Timestamp now: %i", gettime()); } Un test destul de simplu as zice, un loop care genereaza 1 milion de verificari if pentru care valoarea variabilei verificate se schimba mereu. Rezultat Timestamp now: 1655379502 Elapsed time: 0 Timestamp now: 1655379502 Nu a durat nici macar 1 secunda ca verificarile sa fie facute. Sfatul meu: Don't fall into the rabbit hole . Nu iti bate capul cu micro optimizari e pierdere de timp, daca consideri ca scriptul tau ruleaza incet adauga pluginul profiler si vezi ce mai exact iti cauzeaza probleme. In cel mai rau caz probabil un if iti va lua 0.00000000000001s din timpul procesorului sa faca verificarea. Edit: Poate daca serverul pe care rulezi scriptul foloseste un procesor mai vechi/mai lent de Pentium IV poate poate un if in plus conteaza Multumesc frumos Quote Link to comment Share on other sites More sharing options...
0 qSorin_ Posted June 16, 2022 Report Share Posted June 16, 2022 4 hours ago, Banditul said: #include <a_samp> main() { new bool:test = true; new nowTime = gettime(); printf("Timestamp now: %i", nowTime); for (new i = 0; i < 1000000; i++) { if (test) { SendClientMessage(0, -1, "Mesaj"); test = false; } else { SendClientMessage(0, -1, "Mesaj"); test = true; } } new elapsedTime = gettime() - nowTime; printf("Elapsed time: %i", elapsedTime); printf("Timestamp now: %i", gettime()); } Un test destul de simplu as zice, un loop care genereaza 1 milion de verificari if pentru care valoarea variabilei verificate se schimba mereu. Rezultat Timestamp now: 1655379502 Elapsed time: 0 Timestamp now: 1655379502 Nu a durat nici macar 1 secunda ca verificarile sa fie facute. Sfatul meu: Don't fall into the rabbit hole . Nu iti bate capul cu micro optimizari e pierdere de timp, daca consideri ca scriptul tau ruleaza incet adauga pluginul profiler si vezi ce mai exact iti cauzeaza probleme. In cel mai rau caz probabil un if iti va lua 0.00000000000001s din timpul procesorului sa faca verificarea. Edit: Poate daca serverul pe care rulezi scriptul foloseste un procesor mai vechi/mai lent de Pentium IV poate poate un if in plus conteaza Normal asa s-ar face un test de viteza, deoarece el cand va trimite mesajul cel mai probabil va fi si formatat! Quote Link to comment Share on other sites More sharing options...
0 Banditul Posted June 16, 2022 Report Share Posted June 16, 2022 21 hours ago, iSorin[] said: Normal asa s-ar face un test de viteza, deoarece el cand va trimite mesajul cel mai probabil va fi si formatat! Greseala mea recunosc, greseala de a include lucruri irelevante la intrebare topicului. O sa imi revizuiesc raspunsul sa fie cat mai corect pentru intrebare, multumesc. Edit: Revizuit raspunsul oferit 1 Quote Link to comment Share on other sites More sharing options...
Question
TheGodfather
Salut, merita ca un gamemode sa aiba 2 limbi? Cam cat ar afecta performanta acea verificare de limba in fiecare loc unde exista un mesaj?
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.