[Java lista] számítási teljesítmény
Legéndi Richárd Olivér
roante at freemail.hu
2009. Aug. 30., V, 07:00:08 CEST
Hali!
Én is csak csatlakozni tudnék az előttem szólókhoz. Profiling/párhuzamosítás is
rengeteget dobhat a dolgon (feltéve, hogy a listában az elemek nem, vagy csak
"nem nagyon" függenek a kiszámolt statisztikáktól). A profiler meg megmondja,
hogy mennyi memóriát zabál az egész, hányszor volt gc hívás, etc., így kb. be
lehet lőni az optimális -Xmx meg -Xms kapcsolókat.
A Math osztály függvényei jók, viszont ha tudod, hogy pl. a pow csak int x int
típusokra kell neked, akkor érdemesebb egy "for (int i=0; i<b; ++i) ret *= a;"
függvényt írnod, mert az gyorsabb lesz valamivel.
Ahogy Péter írta, esetleg ki lehet tolni a számítást (vagy annak egy részét)
natívba - bár én előbb nyúlnék Matlabhoz vagy Maple-höz, mint Fortranhoz :-)
Ricsi
Maglódszki Viktor wrote:
> Sziasztok!
>
> A segítségeteket szeretném kérni, hogy egy nagy számítás igényű
> programnál milyen JVM paramétereket ajánlotok?
> Vázolom miről van szó.
> Van egy pénzügyi alkalmazás mely egy statisztikai számítást végez.
> Ez alapból úgy néz ki hogy egyetlen futás is: 120x megy végig egy 1000x
> elemű listán.
> Tehát egy külső ciklus 1-120 megpörget egy benne lévőt 1-1000x mind a
> ciklusban vannak más-más számolások. Majd a végén ebből állítja elő a
> statisztikákat.
> Na most ez (tehát a 120x1000) futás jelenleg egy adott gépen 8másodperc
> alatt zajlik le.
> A probléma azzal van hogy ezt 10.000 kéne lefuttatni :)
> Az egy picit sokáig tart.
>
> Mit javasoltok?
> Jelenleg számolásokhoz (pow,sqrt,log) függvényeket a math osztályokból
> használok.
> Eredmények tárolására van néhány Map ezeket hashmap implementációk.
> Listákhoz egyetlen helyen használok LinkedList-et a többi ArrayList.
> Körülbelül 6-8 ilyen objektum van benne amiket a számolás során bejár és
> abból vett eredményekből kalkulál.
>
> Mindenféle ötlet érdekelne és ki is tesztelném vele a futást.
>
> Köszönöm!
További információk a(z) Javalist levelezőlistáról