[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