WebAssemblyn ja JavaScriptin suorituskykyvertailu
Hakamaa, Aapo (2021)
Hakamaa, Aapo
2021
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2021-06-30
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202106226023
https://urn.fi/URN:NBN:fi:tuni-202106226023
Tiivistelmä
Verkkopalveluiden kasvavan käytön myötä verkkosivujen toiminnalle asetetaan yhä enemmän vaatimuksia. Selaimella suoritettava verkkosivujen logiikka monimutkaistuu jatkuvasti responsiivisten käyttöliittymien yleistyessä. Vaikka tietokoneiden laskentateho on tasaisessa kasvussa, on tullut tarve kehittää myös täysin uusia teknologioita sujuvoittamaan verkkoselailua.
Jo usean vuosikymmenen ajan verkkosivujen logiikka on perustunut JavaScript-ohjelmointikieleen. Selaimet ovat optimoineet hyvin pitkälle tämän kielen suorittamista. JavaScriptissä on kuitenkin tehty perustavanlaatuisia ratkaisuja, kuten dynaaminen tyypitys ja ihmisen luettavan koodin tulkkaus, jotka asettavat rajoitteita suoritusnopeudelle.
WebAssembly on uusi, kehitteillä oleva teknologia JavaScriptin rinnalle. Sen tavoitteena on kiertää JavaScriptin rajoitteita ja näin tuoda lisätehoa koodin suorittamiseen verkkosivuilla. WebAssemblyn vahvuuksia ovat nopeasti tulkattava tavukoodi ja staattinen tyypitys.
Tämän tutkielman tarkoitus on vertailla WebAssemblyn ja JavaScriptin suorituskykyjä. Vertailu toteutetaan kahdella erilaisella käyttötapauksella. Kummassakin käyttötapauksessa käytetään lisäksi useita eri arvoja parametreille, jotta saadaan tarkempi kuva nopeuteen vaikuttavista tekijöistä. Molemmilla kielillä saman ohjelman suoritukseen kuluva aika mitataan millisekunnin tarkkuudella. Jokaisella parametrijoukolla aika mitataan useaan kertaan ja lopputulokseen otetaan näiden aikojen mediaani.
Tutkielman tuloksista havaitaan, että WebAssembly on suurimmassa osassa tapauksista huomattavasti nopeampi JavaScriptiin verrattuna. Huonoimmillaan WebAssemblyn suorituskyky on samaa luokkaa ja parhaimmillaan jopa yli sata kertaa nopeampi kuin JavaScript. Tämän työn menetelmät kuitenkin antavat vain yksipuolisen kuvan WebAssemblyn ja JavaScriptin eroavaisuuksista. WebAssemblyn käyttöönottoa harkittaessa tulee ottaa huomioon muitakin seikkoja, kuten selainten tuki, kehityskustannukset ja osaaminen.
Jo usean vuosikymmenen ajan verkkosivujen logiikka on perustunut JavaScript-ohjelmointikieleen. Selaimet ovat optimoineet hyvin pitkälle tämän kielen suorittamista. JavaScriptissä on kuitenkin tehty perustavanlaatuisia ratkaisuja, kuten dynaaminen tyypitys ja ihmisen luettavan koodin tulkkaus, jotka asettavat rajoitteita suoritusnopeudelle.
WebAssembly on uusi, kehitteillä oleva teknologia JavaScriptin rinnalle. Sen tavoitteena on kiertää JavaScriptin rajoitteita ja näin tuoda lisätehoa koodin suorittamiseen verkkosivuilla. WebAssemblyn vahvuuksia ovat nopeasti tulkattava tavukoodi ja staattinen tyypitys.
Tämän tutkielman tarkoitus on vertailla WebAssemblyn ja JavaScriptin suorituskykyjä. Vertailu toteutetaan kahdella erilaisella käyttötapauksella. Kummassakin käyttötapauksessa käytetään lisäksi useita eri arvoja parametreille, jotta saadaan tarkempi kuva nopeuteen vaikuttavista tekijöistä. Molemmilla kielillä saman ohjelman suoritukseen kuluva aika mitataan millisekunnin tarkkuudella. Jokaisella parametrijoukolla aika mitataan useaan kertaan ja lopputulokseen otetaan näiden aikojen mediaani.
Tutkielman tuloksista havaitaan, että WebAssembly on suurimmassa osassa tapauksista huomattavasti nopeampi JavaScriptiin verrattuna. Huonoimmillaan WebAssemblyn suorituskyky on samaa luokkaa ja parhaimmillaan jopa yli sata kertaa nopeampi kuin JavaScript. Tämän työn menetelmät kuitenkin antavat vain yksipuolisen kuvan WebAssemblyn ja JavaScriptin eroavaisuuksista. WebAssemblyn käyttöönottoa harkittaessa tulee ottaa huomioon muitakin seikkoja, kuten selainten tuki, kehityskustannukset ja osaaminen.
Kokoelmat
- Kandidaatintutkielmat [8997]