Hogyan lehetne ezt megoldani? Esetleg alternatívák? C#
Az alább sor OutOfMemory kivételt dob:
Area[,,] areas = new Area[2560, 2560, 60];
az Area egy class, 3 mezővel, semmi különös.
Azt szeretném megtudni, hogy hogyan lehetne ezt a problémát elhárítani, vagy esetleges alternatívák a problémára.
Egy játék mapjának akarom eltárolni koordinátánként, hogy mi van ott (x,y,z) . Hogyan lehetne ezt kivitelezni kevésbé problémás és elegánsabb módszerrel?
Köszönöm előre is a válaszokat! Megy a plusz :)
Ja a számokra nem is figyeltem, bocsi :-S
Akkor viszont tárold el az elemeket kiterjedéssel együtt és csapd hozzá a koordinátájukat és tedd be őket egy listába :)
#5: Vmit nagyon elszámoltál.
A tömb maga 3 GB, ha 64 bites cuccról van szó (és mért ne arról lenne, hiszen 32 biten maga a tömb elfoglalna 1,5 g igát, az adatnak nem maradna hely.
Az elemenként 3*32bit (+16 byte overhead objectenként, azaz 28 byte összesen) 10.25 GB memóriát igényel, tehát közel nem kell 5000 GB. Ha van 32 GB a gépedben, akkor elvileg mennie kéne.
Két lehetőséged van:
Ha fix a pálya, akkor tárolod fájlban (esetleg tömörítve) a HDD-n, és a memóriába mindig csak és kizárólag azt hívod be, amire szükséged van. Ez statikus, előre létrehozott pálya esetén használható.
A kettes számú megoldás, hogy tárhely foglalás helyett a CPU-t használod, és on-the-fly hozod létre a pályát. Kvázi egy seedel meghatározott random generátor, ami mindig ugyanazt a pályát adja vissza adott koordinátára. Ekkor a CPU fog dolgozni inkább, viszont helyet alig-alig kell foglalnod. (vagy seed nélkül vagy egy random pályád).
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!