Vykon Javy

Vlastimil Elias vlastimil.elias na qbizm.com
Pátek Leden 23 10:51:32 CET 2004


Ahoj,

Aby bylo jasno co je technologie Sun HotSpot, tak to znamena ze JVM 
sleduje kolikrat byla
ktera metoda volana a po urcitem mnozstvi volani ji prekompiluje do 
nativniho kodu.
Drivejsi JIT (Just In Time kompiler v JVM od Sunu) delal tusim to, ze 
kompiloval vzdy vse,
ale tim zbytecne zdrzoval start JVM a zbytecne kompiloval malo pouzivane 
metody.

Co se tyce uprav Sun JVM 1.4.2 proti predeslim,  (nebo alespon toto jsou 
moje zavery z
informaci ktere mam), hodne se zamerili na upravy Garbage Collectoru 
(ktery ma velky vliv
na aplikace s vetsim mnozstvim vytvarenych a rusenych objektu, coz se ve 
vasem testu
asi prilis neuplatni, ale napr. na serverove a  J2EE aplikace to ma 
velky vliv), nejake upraavy
HotSpotu a upravy pro zrychleni ve standardnich knihovnach (hlavne Swing).

Zhorseni pri pouziti -server muze byt zpusobeno tim, ze JVM v tomto 
pripade je optimalizovano
pro dlouhodoby beh, takze napr. HotSpot preklada bytecod do nativniho 
kodu az
pozdeji.
Dale ma -server jine parametry nastaveni Garbage Collectoru (pomery 
velikosti jednotlivych oblasti
pro ruzne generace objektu, mozna i trochu jine algoritmy GC nebo jejich 
parametry) takze pro
dobry beh vyzaduje vice pameti nez standardni -client mod.
Take se uvadi ze -server zpusobuje zpomaleni startu JVM.

Svoje zavery  jsem ucinil podle prezentace na Sun Tech Days ktera se 
zabyvala optimalizaci vykonu
jejich JVM a z nekterych clanku na internetu (na JavaWorld).

Myslim ze pokud chcete vybrat optimalni JVM pro svoji aplikaci, musite 
provest testy primo
s vasi aplikaci, aby byly podchyceny jeji rysy. Obecne testy vam muzou 
pouze naznacit a mely by
testovat ruzne vlastnosti, ne pouze vypocet s cisly v pohyblive carce. Z 
tohoto pohledu byl docela
zajimavy clanek na ktery byl odkaz v tomto Threadu vcera
( http://osnews.com/story.php?news_id=5602&page=3 ). Napr. velice pomale 
trigonometricke
funkce v JVM 1.4.2, i kdyz na druhoui stranu jsem je za zhruba 4 roky 
celkem intenzivniho programovani
v Jave nikdy nepouzil.
Myslim ze vas puvodni test muze zacatecnik sice pochopit, ale je 
zjednodusen az prilis a nepodava
celkem objektivni informace, nasleduji diskuze to ale myslim vynahradila 
;-) <NoFlamePlease/>

Diky za trpelivost.

Vlastik

Petr Toman wrote:

> Zdravim,
> muj puvodni test je zamerne co nejjednodussi, aby jej pochopil i 
> zacatecnik (na ktereho tezko vyrukovat rovnou s HotSpotem apod.). 
> Soucasne jsem provedl i test, kde jsem na zacatek programu pridal 
> volani pro kompilaci tridy pomoci JIT (2. verze), ale protoze vysledky 
> pro Javu se temer nezmenily a take proto, ze toto urychleni se prilis 
> nepouziva (ovsem napr. u appletu v MSIE je rozdil poznat na prvni 
> pohled), jsem je nepublikoval.
>
> Dnes jsem provedl i vas test s cyklem primo v programu (3. verze), 
> poradi pro Javu zustalo stejne jako pro volani z davky. Mimochodem 
> vase vysledky pro JDK 1.2.2 jsou zkreslene, protoze slo o 
> interpretovanou Javu (viz hlaska "nojit"), tzn. nelze mluvit o 
> desetinasobnem zrychleni.
>
> Je s podivem, ze pouziti parametru "-server" muze paradoxne vest ke 
> zhorseni vykonu - u JDK 1.3.1 k tomu doslo na Windows i Linuxu. 
> Nicmene presvedcivym vitezem ve vsech mnou testovanych pripadech 
> zustava JRockit.
>
>
> --  1.verze: 100x spusteno v davce
> JDK 1.4.2_03                    : 857,64 ms
> JDK 1.3.1_07                    : 840,36 ms
> Jview 3229 (Microsoft JVM)      : 797,83 ms
> Kompilovane C (bcc32.exe -6 -O2): 787,54 ms
> JRockit 8.1 SP2                 : 568,37 ms
>
>
> --  2.verze: Compiler.compileClass(VypocetPi.class); 
> Thread.sleep(10*1000);
>
> Kompilovane C (bcc32.exe -6 -O2): 787,54 ms
> JDK 1.4.2_03                    : 764,86 ms
> Jview 3229 (Microsoft JVM)      : 747,90 ms
> JDK 1.3.1_07                    : 718,78 ms
> JRockit 8.1 SP2                 : 605,55 ms  (kupodivu mirne zhorseni)
>
>
> -- 3. verze: cyklus 100x primo v programu
>
> Kompilovane C (bcc32.exe -6 -O2): 125150 ms
> JDK 1.3.1_07 (java -server)     : 104490 ms  (-server = znacne 
> zhorseni vykonu)
> JDK 1.4.2_03 (java -server)     :  78302 ms  (-server = mirne zhorseni 
> vykonu)
> JDK 1.4.2_03                    :  74357 ms
> JDK 1.3.1_07                    :  72795 ms
> Jview 3229 (Microsoft JVM)      :  72784 ms
> JRockit 8.1 SP2                 :  51444 ms  (2.4x rychlejsi nez C)
>
>
> P. Toman


-- 

Ing. Vlastimil Elias                        Qbizm technologies, a.s.
vedouci analytik                                ... the art of software
________________________________________________________________________
Kralovopolska 139                           tel: +420 541 242 414
601 12 Brno, CZ    http://www.qbizm.cz      fax: +420 541 212 696

------------- dal?í ?ást ---------------
A non-text attachment was scrubbed...
Name: vlastimil.elias.vcf
Type: text/x-vcard
Size: 283 bytes
Desc: [?ádný popis není k dispozici]
URL: <http://amaio.cz/pipermail/konference/attachments/20040123/2603ffa0/attachment.vcf>


Další informace o konferenci Konference