Value of WebAssembly in Full-Stack Applications
Kilpeläinen, Ida (2021)
Kilpeläinen, Ida
2021
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2021053112925
https://urn.fi/URN:NBN:fi:amk-2021053112925
Tiivistelmä
WebAssembly on uusi web-standardi, konekieli, joka mahdollistaa muiden ohjelmointikielien kuin JavaScriptin ajamisen selaimessa. WebAssembly-koodi voidaan kääntää lukuisista ohjelmointikielistä, kuten C/C++, C# ja Rust. Sen päällimmäinen tarkoitus on parantaa web-sovellusten suorituskykyä. WebAssembly-ohjelman suoritusnopeus voi olla jopa yhtä hyvä kuin perinteisten käännettyjen ohjelmien.
Tämä tutkimus on tehty Nokia Solutions and Networks -yritykselle, joka on osa Nokia konsernia. Opinnäytetyön tarkoitus on esitellä WebAssembly-standardi ja kuinka sitä voitaisiin hyödyntää web-sovellusten nopeuttamisessa. WebAssemblyn käyttöä ja sitä jo käyttäviä sovelluksia tuodaan esille. Tutkimusta varten kehitettiin full stack -websovellus React.js sovelluskehyksellä ja Node.js ajoympäristöllä, jotta samalla voitaisiin tutkia jo luodun WebAssembly moduulin käytön helppoutta React-sovelluksessa.
Funktioiden suoritusaika mitattiin kahdella eri muuttujalla: Pelkän funktion suorittamiseen menevä aika ja funktiokutsun ympärillä suoritettavien prosessien, kuten datan esiprosessointiin kulunut aika. Nämä ajat mitattiin ohjelmallisesti. Myös selainten tarjoamia analyysityökaluja, joista voidaan nähdä esimerkiksi funktion kutsupino, käytettiin tulosten selkeyttämiseksi.
Alustava hypoteesi oli, että WebAssembly lisäisi luodun sovelluksen tehokkuutta. Tuloksista kuitenkin ilmeni, ettei tämä pitänyt paikkaansa. Vaikka WebAssembly-funktioiden suorittaminen itsessään oli nopeampaa, funktiokutsuun tarvittavat prosessit veivät huomattavasti aikaa. Tämän takia WebAssembly-funktioiden kokonaisaika oli suurempi kuin JavaScript-funktioiden. Pääsyy tähän on se, että luotu sovellus oli vääränlainen WebAssembly-implementaatiolle.
Tutkimuksen tulokset näyttävät, ettei WebAssembly tällaisenaan ole sopiva kaikenlaisiin sovelluksiin. Sovellus, johon WebAssembly halutaan yhdistää pitää valita tarkasti. Nykyinen versio WebAssemblystä on vasta ensimmäinen ja sitä pitää jatkokehittää parhaimman tuloksen saavuttamiseksi.
Tämä tutkimus on tehty Nokia Solutions and Networks -yritykselle, joka on osa Nokia konsernia. Opinnäytetyön tarkoitus on esitellä WebAssembly-standardi ja kuinka sitä voitaisiin hyödyntää web-sovellusten nopeuttamisessa. WebAssemblyn käyttöä ja sitä jo käyttäviä sovelluksia tuodaan esille. Tutkimusta varten kehitettiin full stack -websovellus React.js sovelluskehyksellä ja Node.js ajoympäristöllä, jotta samalla voitaisiin tutkia jo luodun WebAssembly moduulin käytön helppoutta React-sovelluksessa.
Funktioiden suoritusaika mitattiin kahdella eri muuttujalla: Pelkän funktion suorittamiseen menevä aika ja funktiokutsun ympärillä suoritettavien prosessien, kuten datan esiprosessointiin kulunut aika. Nämä ajat mitattiin ohjelmallisesti. Myös selainten tarjoamia analyysityökaluja, joista voidaan nähdä esimerkiksi funktion kutsupino, käytettiin tulosten selkeyttämiseksi.
Alustava hypoteesi oli, että WebAssembly lisäisi luodun sovelluksen tehokkuutta. Tuloksista kuitenkin ilmeni, ettei tämä pitänyt paikkaansa. Vaikka WebAssembly-funktioiden suorittaminen itsessään oli nopeampaa, funktiokutsuun tarvittavat prosessit veivät huomattavasti aikaa. Tämän takia WebAssembly-funktioiden kokonaisaika oli suurempi kuin JavaScript-funktioiden. Pääsyy tähän on se, että luotu sovellus oli vääränlainen WebAssembly-implementaatiolle.
Tutkimuksen tulokset näyttävät, ettei WebAssembly tällaisenaan ole sopiva kaikenlaisiin sovelluksiin. Sovellus, johon WebAssembly halutaan yhdistää pitää valita tarkasti. Nykyinen versio WebAssemblystä on vasta ensimmäinen ja sitä pitää jatkokehittää parhaimman tuloksen saavuttamiseksi.