TiraLabra/TiraLabra — pull request #279 by ieaalto (2014-06-15 20:53:33+00:00)
Title: 5.Palautus

LZW:kin toimii nyt kokonaan omilla tietorakenteilla, javan tietorakenteita ei pitäisi ohjelmasta enää löytyä. Toteutin LZW:n hakemiston binäärihakupuilla. Huomattavaa eroa suoritusajassa ei tunnu olevan sen ja HashMap -toteutuksen välillä. Myös erot algoritmien välillä ovat hyvin pienet. LZW toimi hitusen nopeammin ja LZ77 pakkaa tiedoston hieman pienempään. Ehkä suuremmalla tiedostolla saa eroja paremmin näkyviin, tällä hetkellä käytän 70 kt tiedostoa.

Kokeilin ensimmäistä kertaa muutta LZ77:n ikkunan kokoa ja LZW:n hakemiston kokoa. Refaktoroin koodia niin että tämä sujuu kätevästi. LZ77 paransi pakkaussuhdetta 65 kt:n ikkunaan asti. Tätä suuremmat ikkunat eivät enää toimi, ilmeisesti koska ikkunasta tulee tällöin suurempi kuin itse tiedostosta. LZW:llä parannusta ei ilmennyt, sen sijaan bugeja kyllä.

LZ77:n bugi vaivaa edelleen. Kun muutin ikkunan koon tuohon 65:n kt:n, bugia ei ilmennyt samalla tiedostolla, mutta en juuri ehtinyt tutkia asiaa enempää. Ensi viikolle jää siis debuggausta ja jonkin näköisen käyttöliittymän tekeminen. Myös pieni refaktorointi olisi paikallaan. Jos aikaa jää, liitän tiedostoihin metadatana esim. ikkunan koon ja tiedostotyypin, mikä tekisi ohjelmasta helpomman käyttää.