hlmod.hu https://hlmod.hu/ |
|
static vs. new https://hlmod.hu/viewtopic.php?f=10&t=23672 |
Oldal: 1 / 1 |
Szerző: | DeR0iD [2016.01.25. 15:59 ] |
Hozzászólás témája: | static vs. new |
[kozep]static vs new[/kozep] Sziasztok mivel néha előfordul a stack hiba az az egy tömbnek túl nagy karakterhosszt adunk akkor az a plugin leáll. Kicsit gondolkoztam és utána néztem, hogy ezt lehet-e orvosolni. És találtam rá megoldást. Itt van pár teszt eredménye. TESZT 1# - 100 Karakterrel new : Sikeresen elindul static : Sikeresen elindul TESZT 2# - 800 Karakterrel new : Sikeresen elindul static : Sikeresen elindul TESZT 3# - 1500 Karakterrel new : Sikeresen elindul static : Sikeresen elindul TESZT 4# - 3000 Karakterrel new : Sikeresen elindul static : Sikeresen elindul TESZT 5# - 5000 Karakterrel new : A szerver leállt static : Sikeresen elindul TESZT 6# - 10000 Karakterrel new : A szerver leállt static : Sikeresen elindul TESZT 7# - 50000 Karakterrel new : A szerver leállt static : Sikeresen elindul TESZT 8# - 200000 Karakterrel new : A szerver leállt static : Sikeresen elindul TESZT 9# - 1000000 Karakterrel new : A szerver leállt static : Sikeresen elindul TESZT 10# - 5000000 Karakterrel new : A szerver leállt static : Sikeresen elindul Szóval a tesztek alapján a static 1000x jobb mint a new! (5 milliónál nem néztem tovább) Tudom jól, hogy a vége felé már nagyon extrém eset és azt is, hogy biztos nem használja senki de, ha ezzel is tudunk memóriát spórolni akkor miért ne tegyük? Egy-két helyen szükséges lehet. Pld: SQL mentés vagy betöltés, Motd megjelenítés. Itt azért lehet lényegesen fontos mert, ha túl sok adatot akarunk tárolni akkor a szerver egy stack hibát fog dobni. Ami ugye azt jelenti, hogy a pluginunk lefog állni. static-ot nem rendszeresítettem még egyik pluginomnál se, de most a közeledő pluginomban teszek vele egy próbát. Esetleg aki tudna a new mellett érvelni, hogy miért jobb az írjon csak kíváncsi lennék egy-két ember véleményére. Köszönöm a figyelmet. Forráskód: Kód: #include <amxmodx> |
Szerző: | Akosch:. [2016.01.25. 18:35 ] |
Hozzászólás témája: | Re: static vs. new |
Szerintem nem feltétlen a legjobb megoldás minden változót static kulcsszóval létrehozni. A legtöbb függvényben szükségtelen a plugin leállásáig tárolni az adatokat, illetve 1.6 -hoz nem hinném, h bárkinek is szüksége van több ezer karakter hosszú szövegekre. Ha mégis bekövetkezne az utóbbi eset, vagy egy gyakran meghívódó függvényről van szó, akkor lehet értelme ( CmdStart, pre- / postthink ... ). Szóval részemről: Méretes tömböknél ( ~250+ elem ) és másodpercenként vagy kisebb időközönként meghívódó függvényeknél használok static kulcsszót változó definiáláshoz, egyéb esetben new. Bár kétlem, hogy nagyon igénybe venné ez a gépet, inkább a feltételek / ciklusok ésszerű használatán kell dolgozni + megfelelő native -kt használni. Sok más dolog van amin lehet spórolni és nagyobb haszna van. Pár szokásos hiba: get_user_weapon -> pev_weapons / EV_INT_weapons is_user_connected, is_user_alive együttes ellenőrzése -> csak is_user_alive Szám / karakter egyenlőség ellenörzésnél -> if, else if, else ágak helyett switch format <-> formatex bool tages változók -> bitflag ... Infó azoknak akik nem tudják mi a különbség: A static kulcsszóval létrehozott lokális változó megmarad, megőrzi értékét a függvény lefutása után is, nincs szükség a függvény minden meghívásakor újra definiálni azt. |
Szerző: | DeR0iD [2016.01.25. 18:57 ] |
Hozzászólás témája: | Re: static vs. new |
Mindenhez nem kell static. De szerintem, ha lenne egy sql táblád amiben van 300 oszlop (Nekem pld ott van a gu) ott hasznát lehet venni. Bár mindenkinek más a véleménye és nem tudjuk meg mondani, hogy melyik a legjobb mert mindegyiknek van előnye, hátránya biztosan. |
Szerző: | Akosch:. [2016.01.25. 19:02 ] |
Hozzászólás témája: | Re: static vs. new |
Nagy tömböknél ajánlják mindenhol, h static -t használj, írtam is, de például egy deathmsg eventen belül felesleges szerintem. |
Oldal: 1 / 1 | Minden időpont UTC+02:00 időzóna szerinti |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |