Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Tietoa laitoksesta:

 

JIT-kääntäjistä

Seuraavaan taulukkoon on koottu joitakin suorituskykytietoja erilaisista java-ympäristöön saatavista JIT-kääntäjistä.

Ensiksi suorituskykyä arvioitiin käyttäen yleisesti käytettyä (mutta ei kovin hyvää) CaffeineMark 3.0 [TM] -testiä. Suuremmat luvut ovat parempia.

Toinen mittaus tehtiin käyttäen NIST:n SciMark 2.0 testiä. SciMark painottaa tieteellisessä ja numeerisessa laskennassa olennaisia seikkoja. Myös tässä suuremmat luvut ovat parempia.

Kolmannessa mittauksessa käytettiin Ziff-Davisin JMark 2.0 [TM] -testiä. Testi tuottaa kullekin ympäristölle kaksi arvoa, toinen kuvaa lähinnä itse virtuaalikoneen tehokkuutta, toinen ikkunoinnin ja grafiikan toteutusta.

Kaikki testit on suoritettu 500 MHz Pentium III -prosessorilla (32 ktavua L1-välimuistia, 512 ktavua L2-välimuistia, ulkoinen väylänopeus 100 MHz) varustetulla konella, jossa on 256 Mtavua keskusmuistia ja 16 Mtavun SDRAM-muistilla varustettu Matrox G400 AGP -näytönohjain (300 MHz RAMDAC) 1024×768×24-bit -tilassa. Linux-ympäristönä laitoksella käytössä oleva ympäristö, jossa ytimen versio on 2.0.38 ja XFree86:n versio on 3.3.5. Windows-ympäristönä Windows 98 SE 4.10.2222 A, näyttökortin ajurin versio 4.11.01.1410. JMark-testit on suoritettu ilman Ziff-Davisin riippumatonta varmistusta eikä Ziff-Davis anna mitään takeita testien tulosten luotettavuudesta. Kaikki testit on suoritettu neljään kertaan ja tulokset ovat kolmen viimeisen ajokerran keskiarvoja.

AlustaOhjelmisto CaffeineMark 3.0 SciMark 2.0 JMark 2.0
LinuxSun / Blackdown JDK 1.1.6v4 894 3.2 - -
LinuxSun / Blackdown JDK 1.1.6v4 + TYA 1.3 2077 9.5 - -
LinuxSun JDK 1.2.2 743 3.4 55 291
LinuxSun JDK 1.2.2 + shuJIT 1562 11.4 81 390
LinuxSun JDK 1.2.2 + TYA 1.7 1870 12.0 205 421
LinuxSun JDK 1.2.2 + JBuilder JIT (javacomp) 1.2.15 2874 18.7 447 338
LinuxSun JDK 1.2.2 + SUNW JIT / Blackdown 1.2PRv2 3288 23.3 322 431
LinuxSun JDK 1.2.2 + SUNW JIT / Blackdown 1.2.2RC4 2658 12.3 316 425
Win98 SESun JDK 1.2.2 710 3.1 54 803
Win98 SESun JDK 1.2.2 + Symantec JIT 7008 59.2 646 880
Win98 SEMicrosoft VM 673 2.3 36 2657
Win98 SEMicrosoft VM + Microsoft JIT 7866 51.2 823 2815

Joitakin huomioita

Varsinaisena kiinnostuksen kohteena näissä kokeissa olivat Sunin JDK 1.2.2 Linux-ympäristössä toimivat JIT-kääntäjät. Vertailun vuoksi mukaan otettiin Linux-puolella vanha JDK 1.1.6 ja Windows -puolen tavallisimmat JVM:t, Sunin ja Microsoftin.

Lisenssit

JIT-kääntäjistä vain shuJIT ja TYA käyttävät GPL-lisenssiä, joka mahdollistaa niiden vapaan käytettävyyden. Sunin toimittamat JIT-kääntäjät (sekä Sunin oma SUNW JIT että Symantec JIT) on varustettu Sunin binäärilisenssillä, johon on lisätty lupa edelleenlevitykseen. Inprisen JBuilder JIT, jota levitetään nimellä javacomp, sisältää lisenssin, joka sallii vain henkiökohtaisen käytön yhdessä tietokoneessa kerrrallaan eikä se näin salli esim. TKTL:n asentavan sitä kaikkiin koneisiinsa. Microsoftin VM:n JIT noudattaa luonnollisesti Microsoftin lisenssipolitiikkaa.

Testit

CaffeineMark on suhteellisen yksinkertainen testi, jonka ongelmallisuus on ollut tiedossa jo kauan ja on muutenkin ollut kiistanalainen. Parhaat JIT-kääntäjät pystyvät optimoimaan pois CaffeineMarkista kokonaisia osatestejä. Tämä osaltaan selittää JIT-kääntäjillä Windows-ympäristössä saavutettuja lukuja.

SciMark keskittyy traditionaalisen numeronmurskaukseen, joka ei ehkä ole javan ominta aluetta. Windows-ympäristön hyvät luvut ovat toki mahdollisia, mutta panevat hieman epäilemään, että onkohan tässäkin onnistuttu optimoimaan joitakin osatestejä pääosin pois. Luvut ovat kuitenkin mahdollisia, sillä SciMarkista on olemassa myös C-kielinen versio, joka tuottaa Linux-ympäristössä mittaustuloksen 86.4.

JMark-testiin sisältyy itse asiassa muitakin muitakin osioita kuin vain tässä käytetyt processor ja AWT playback. JMarkia ei saatu sellaisenaan toimimaan JDK 1.1.6 -ympäristössä. Microsoftin VM:n (sekä ilman että kera JIT-kääntäjän) saamat erinomaiset suoritusarvot AWT-testissä perustunevat pitkälti siihen, ettei Microsoftin VM juuri lainkaan päivitä näyttöä grafiikkatestien aikana.

JIT-kääntäjät

shuJIT on toimiva vapaa (GPL) JIT-kääntäjä, mutta se häviää kaikissa testeissä myös vapaalle TYA -JIT-kääntäjälle eikä tarjoa siihen nähden mitään etuja.

TYA on luotettava, muttei kovin tehokas JIT-kääntäjä, joka on vapaasti käytettävissä.

JBuilder JIT (Inprise JIT) on lisenssinsä vuoksi ongelmallinen. Huomattakoon, että se myös häviää selvästi TYA:lle JMarkin AWT playback -testissä.

Blackdownin Linuxiin siirtämän Sunin SUNW JIT:n molemmat versiot (JDK 1.2:n ennakkoversiosta tehdyn siirron toinen versio eli 1.2PRv2 ja JDK 1.2.2 siirron julkistusehdokas 4 eli 1.2.2RC4) ovat myös ongelmallisia. JIT 1.2PRv2 on kyllä melko nopea, mutta myös Blackdown myöntää sen toimivan joskus virheellisesti. JIT 1.2.2RC4 on toimivampi ja hitaampi, mutta kyllä sekin saa järjestelmän kaatumaan esim. JavaWorldin testejä ajettaessa.

Loppupäätelmä

Tällä hetkellä TYA lienee paras ratkaisu Sun JDK 1.2.2:n yhteydessä käytettäväksi JIT-kääntäjäksi Linux-ympäristössä.


Petri Kutvonen