[Java lista] számítási teljesítmény

Peter Verhas peter at verhas.com
2009. Aug. 30., V, 08:25:05 CEST


Egész hatványra elég "lassú" így. Inkább valahogy így kell:

a^b

double result = 1;
while( b > 0 ){
if( b legkisseb bitje 1) result = result * a;
b = b/2 egész osztással (bit shift előjel nélkül)
a = 2 * a
}

Ha b n bites akkor max 2n szorzás van benne.

2009/8/30 Legéndi Richárd Olivér <roante at freemail.hu>:
> 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!
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>



-- 
Verhás Péter
ügyvezető
Verhás & Verhás Szoftver Manufaktúra Kft.
peter at verhas.com
t: +36(30)9306805


További információk a(z) Javalist levelezőlistáról