Deterministinen Java-tavukoodin profiloija

Asiakas

Martin Pärtel TKTL

Työn kuvaus

Projektissa toteutetaan Java-ohjelman suoritusnopeutta mittaava välineistö. Toteutuksessa päästään analysoimaan ja muokkaamaan Javan tavukoodia. Välineitä aiotaan käyttää ohjelmointikurssien tehtävien automaattisessa testauksessa.

Alla on projektilta toivottuja tuotteita prioriteettijärjestyksessä. Projekti on menestys, jos ensimmäinen kohta tehdään hyvin. Jälkimmäiset kohdat ovat jatkokehitysehdotuksia siltä varalta, että aikaa jää yli tai ensimmäisen kohdan tehtäviä on vaikeaa jakaa ryhmän jäsenten kesken. Ryhmä voi myös ehdottaa omia jatkokehityssuuntia.

  1. Tavukoodin laskeminen

    Java-ohjelman suoritusajan mittaaminen järjestelmän kellon tai suoritinaikalaskurin avulla on ongelmallista, sillä saatu mittaustulos on epädeterministinen sekä hyvin laitteisto- ja alustariippuvainen. Parempi tapa on laskea, montako tavukoodikomentoa ohjelma suorittaa [1, 2, 3]. Projektissa toteutetaan kirjasto, joka lisää Java-tavukoodiin komentoja suoritusajan nauhoittamiseen. Kirjastoa käytetään ohjelmoinnin ja tietorakenteiden perusopetuksessa opiskelijoiden koodin automaattiseen suorituskykytestaukseen.

    Huomioitavia asioita:

  2. Metodikutsujen nauhoittaminen

    Eräs kehitysmahdollisuus on nauhoittaa ohjelman tekemät metodikutsut ja tavukoodilaskurin tila metodikutsujen kohdalla. Näin opiskelijalle voidaan antaa graafinen esitys metodikutsujen sisäkkäisyydestä ja kunkin metodikutsun kustannuksesta. Lisäksi testissä voidaan tarvittaessa vaatia esimerkiksi, että metodin M1 on kutsuttava (mahdollisesti epäsuorasti) metodia M2 tai metodin M1 on kutsuttava itseään rekursiivisesti.

  3. Deterministisyyden tarkistaja

    Tavukoodilaskurin pitäisi antaa samalle metodikutsulle aina sama tulos, mikäli metodi on deterministinen. Metodi on varmasti deterministinen, jos se ei lue syötettä muualta kuin parametreistaan, ei ole konekielinen ("native") metodi, eikä kutsu muita epädeterministisiä metodeja. Projektissa toteutetaan tavukoodianalyysi, joka tarkistaa, täyttääkö metodi nämä kriteerit.

Viitteet

  1. http://dx.doi.org/10.1016/j.entcs.2005.10.032
  2. http://sdqweb.ipd.kit.edu/mediawiki-sdq-extern/images/a/a5/Kuperberg2008a.pdf
  3. http://sdqweb.ipd.kit.edu/wiki/ByCounter
  4. http://www.cs.nuim.ie/~jpower/Research/Papers/2008/lambert-qapl08.pdf
  5. http://www.jopdesign.com/doc/timing.pdf

Immateriaalioikeudet

Projekti toteutetaan laitoksen yleisen lisenssisopimuksen alaisuudessa.