Este WebAssembly cu adevărat mai rapid decât JavaScript? Un experiment practic!

WebAssembly este un limbaj de nivel scăzut, cu un format binar compact, care rulează cu performanțe aproape native. Free Pascal oferă, de ceva vreme, o modalitate de a compila Pascal în WebAssembly și de a integra aceste module în aplicațiile dvs. web. Așa că, desigur, a trebuit să experimentăm cu el, pentru a vedea dacă se ridică la înălțimea hype-ului.

TMS Software Componente Delphi

Este important de știut că, în timp ce WebAssembly este rapid și foarte compact, are un nivel foarte scăzut. WebAssembly nu are conexiune directă cu DOM-ul browserului, iar comunicarea dintre JavaScript și WebAssembly este limitată la matrice de octeți, valori întregi și flotante. Din fericire, puteți aloca memorie pentru modulul WebAssembly și puteți utiliza aceasta pentru a citi/scrie date mai complexe. Dar toată interfața necesară pentru aceasta (și pentru accesarea DOM) este ceva ce va trebui să scrieți singur.

Procesarea imaginii

Pentru experimentul nostru, am creat o aplicație de procesare a imaginilor, deoarece aceasta implică de obicei o procesare grea a datelor. Puteți urmări o demonstrație live a aplicației aici . Puteți încărca o imagine și puteți folosi diferite filtre pe ea. Puteți utiliza comutatorul de comutare pentru a alege între JavaScript pur sau WebAssembly pentru a procesa imaginea și pentru a vedea singur cât de rapid este WebAssembly.

Primul test a luat în considerare doar procesarea imaginii și nu citirea și scrierea datelor. După cum puteți vedea în grafic, în acest test, WebAssembly este de aproximativ 3 ori mai rapid.

TMS Software Componente Delphi

Pentru al doilea test, am cronometrat funcția completă. Aceasta a inclus scrierea și citirea din WebAssembly. Și chiar și atunci, WebAssembly este de aproximativ 1,5 ori mai rapid decât JavaScript.

TMS Software Componente Delphi

Concluzie

JavaScript este mult mai lent decât WebAssembly atunci când este implicată procesarea unor cantități mari de date. Pentru sarcini mici, JavaScript ar putea fi totuși calea de urmat, deoarece diferența este de neglijat. Pentru sarcinile care necesită multe resurse , cum ar fi editarea video și procesarea avansată a imaginilor, WebAssembly este calea de urmat. Aceste sarcini necesită mult calcul și aici strălucește WebAssembly , performând la o viteză aproape nativă.

Cod sursa

Puteți descărca codul sursă al proiectului demonstrativ aici . Aceasta include aplicația client web TMS WEB Core, precum și codul sursă al procesării imaginilor bazate pe Pascal, care urmează să fie compilat într-un modul WebAssembly. Am livrat un fișier WebAssembly pre-compilat în proiect, astfel încât să nu fie nevoie să-l compilați singur. Dar dacă doriți să compilați sau să scrieți propriile module WebAssembly, va trebui să instalați compilatorul Object Pascal to WebAssembly al echipei FPC. Puteți găsi ghidul de instalare pentru compilator aici .

TMS Software Componente Delphi