HTML

Survive Developement

Itt olvashatod a Survive! nevű játék fejlesztésének állapotát, lépéseit. És mi is lesz a játék? Egy zombis-túlélős játék, ahol elsősorban a csapatmunkára építkezve kell megpróbálni életben maradni egy kihalt városban. A terep teljesen a tietek, nincsenek szabályok: éljetek túl, ahogy tudtok!


Küldj e-mailt nekünk:
gilgamesco@gmail.com

Sikolyok

Ettől tépjük a hajunkat:

Friss topikok

  • Sir Butcher: A gyors mozgású ütközés-érzékelés majd a lövésnél lesz topic :D A második esetben teljesen igaza... (2012.04.05. 16:38) Ütközésérzékelés
  • _fpeti_: Halad ez. (2012.04.04. 22:01) Gravitáció
  • Sir Butcher: Az sem rossz, az tény :D Szerencsére egyelőre annyi különbözőt kell csinálnom, hogy esélyem sincs ... (2012.02.20. 21:48) Scenery - Még több látvány
  • Sir Butcher: Na, ideírom: obj-nél megoldottam a csontokat. Melléktermékként összejöttek, extra számítás nélkül ... (2011.12.02. 11:48) Model Animálás - a probléma, és a (vélt) megoldás
  • Burwor: "A tesztvárosban sétálgatva belefutsz egy házba, aminek hiányzik egy fala. Mit csinálsz?" Zárva a... (2011.11.10. 15:00) Sziduri - a grafmotor bemutatkozik

Optimalizálás kezdőknek

2011.10.02. 11:32 :: GizmoSDK

Az előző posztomban bemutatott városgenerálás már egészen ügyesen működik. Csupán annyi a gond vele, hogy lassú. Becsléseim alapján egy nagyobb metropolisz legenerálása simán igénybe vehet minimum 10 percet. Mit lehet ilyenkor tenni? Előkapjuk a profilert, meghatározzuk a progi gyenge pontjait, és optimalizálunk!

Rendben, lassú a progi, és szeretnénk, ha még az épp aktuális világvége-határidő előtt befejezné a munkát. Az első lépés az az, hogy meghatározzuk, mitől olyan lassú? Erre vannak kitalálva a profilerek. Akit érdekel, hogy működnek olvasson utána, nekünk most elég annyi, hogy futásidőben (tehát futtatni kell a progit) statisztikát készít a programról. Pl. hogy melyik függvényt hányszor hívták meg, melyik függvényben mennyi időt töltött a kód, stb. Hát nézzük, a mi kis városgenerátorunk mit produkál (a szükségtelen részleteket nem közlöm. De van bőven abból is :D):
COST CENTRE    MODULE   %time   %alloc
getByIndex     Graph     35.7      0.4
drawLine       CityGen   29.6     47.8
drawSquare     CityGen   26.6     44.2
run            CityGen    1.9      0.0
display        CityGen    1.2      0.0
changeNode     Graph      1.1      3.2
makeVector     Geometry   0.3      1.7
Nézzük. A getByIndex az én művem, a gráfban megkeres egy elemet az indexe alapján (élt, vagy csomópontot). Úgy tűnik, hogy az egész idő 35%-át itt tölti el. Ami 3 és fél percből laza egy percet jelent. A drawLine és drawSquare igazából nem érdekel minket, mivel a végső kód nem fog a rajzolással foglalkozni, csak szegény hülye fejlesztőnek kell az, hogy vizuálisan is felfogja az adatokat. A többi pedig láthatóan elhanyagolható.
 
A getByIndex fog egy tömböt, amiben minden elemhez van egy index rendelve (nem, nem mappel oldottam meg, mert nem akartam még azzal is szenvedni, most már lehet, hogy belenézek), és az index alapján keresi ki a megfelelő elemet. A feladat, hogy ezt optimalizáljuk. Az ötlet, hogy eleve rendezetten tartsuk a listát, és akkor vagy logaritmikus, vagy konstans időben ki tudjuk szedni a megfelelő elemet. A másik lehetőség, hogy rábízzuk ezt a feladatot egy profira, aki már írt egy ilyet. Ilyen leeht pl a Data.Map könyvtár, amit még nem néztem meg, mire jó, de azt hiszem, köze lehet a problémámhoz.

Szólj hozzá!

Címkék: optimalizálás városgenerálás

A bejegyzés trackback címe:

https://survivedev.blog.hu/api/trackback/id/tr933271616

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása