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.
Alusta | Ohjelmisto | CaffeineMark 3.0 | SciMark 2.0 | JMark 2.0 | |
---|---|---|---|---|---|
Linux | Sun / Blackdown JDK 1.1.6v4 | 894 | 3.2 | - | - |
Linux | Sun / Blackdown JDK 1.1.6v4 + TYA 1.3 | 2077 | 9.5 | - | - |
Linux | Sun JDK 1.2.2 | 743 | 3.4 | 55 | 291 |
Linux | Sun JDK 1.2.2 + shuJIT | 1562 | 11.4 | 81 | 390 |
Linux | Sun JDK 1.2.2 + TYA 1.7 | 1870 | 12.0 | 205 | 421 |
Linux | Sun JDK 1.2.2 + JBuilder JIT (javacomp) 1.2.15 | 2874 | 18.7 | 447 | 338 |
Linux | Sun JDK 1.2.2 + SUNW JIT / Blackdown 1.2PRv2 | 3288 | 23.3 | 322 | 431 |
Linux | Sun JDK 1.2.2 + SUNW JIT / Blackdown 1.2.2RC4 | 2658 | 12.3 | 316 | 425 |
Win98 SE | Sun JDK 1.2.2 | 710 | 3.1 | 54 | 803 |
Win98 SE | Sun JDK 1.2.2 + Symantec JIT | 7008 | 59.2 | 646 | 880 |
Win98 SE | Microsoft VM | 673 | 2.3 | 36 | 2657 |
Win98 SE | Microsoft 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