Bytte ut JavaScript: Hvordan eBay laget en webapp 50x raskere ved å bytte programmeringsspråk

De beste programmeringsspråkene å lære i 2019: Topp kodingsevner som betaler deg mest Dette er språkene som er mest etterspurt og tilbyr høyest lønn.

Må-lese utviklerinnhold

  • Java og JavaScript dominerte programvareutvikling på 2010-tallet
  • Hvordan bli utvikler: Et jukseark
  • 10 måter å forhindre utbrenthet av utviklere (gratis PDF)
  • Python spiser verden: Hvordan en utviklerens sideprosjekt ble det hotteste programmeringsspråket på planeten

Online markedsplass eBay har avslørt hvordan det økte ytelsen til en krevende webapp med 50x ved hjelp av WebAssemble.

Den "forbløffende" hastigheten opp etter å ha byttet fra en JavaScript-basert til en stort sett WebAssemble-basert web-app ble detaljert av eBay-ingeniørteamet, som sa at ytelsesøkningen bidro til at det var mulig å bygge en svært nøyaktig strekkodeskanner som en nett app.

Ved å kompilere kode til WebAssemble, kan utviklere bygge apper som leverer gjennomgående høy ytelse i nettleseren, på lik linje med de som tilbys av apper som kjører innfødt.

eBay var opptatt av å utnytte ytelsen til en nettversjon av strekkodeskanneren, en funksjon som den tilbyr i Android- og iOS-appene sine, slik at selgere kan skanne varer de auksjonerer på.

"WebAssemble var annerledes. Det har et enormt potensial, vi hadde rett og slett ikke riktig brukssak. Vel, det forandret seg nylig, " sa eBay-programvareteknisk team i et eBay-blogginnlegg.

En av fordelene med WebAss Assembly (Wasm) er at den tilbyr kodeportabilitet for en rekke språk, slik at utviklere kan ta kode de har skrevet for andre plattformer og kompilere til WebAssemble slik at den kan kjøres i store nettlesere.

Følgelig kunne eBay ta den eksisterende versjonen av strekkodeskanneren skrevet i C ++ og sammenstille den til Wasm ved hjelp av Emscripten, ved å bruke den Docker og Node.js-baserte tilnærmingen som er beskrevet her.

Etter noen få små problemer med tennene, kunne eBay-teamet kjøre strekkodeskanneren i nettleseren ved å bruke en Worker-tråd og JavaScript-limkode.

Den Wasm-baserte skanneren var i stand til å behandle bilder av strekkoden med 50 Frames per Sekund (FPS), sammenlignet med omtrent 1FPS i en tidligere JavaScript-basert skanner som eBay hadde testet, noe som teamet beskrev som "forbløffende."

Problemet var at den Wasm-baserte skanneren fortsatt ikke klarte å oppdage strekkoder i 40% av tilfellene.

Teamet ble opprinnelig forundret over hvorfor den samme C ++ - koden som fungerte i omtrent 100% av tilfellene når den ble kompilert til native code for Android og iOS-apper, sviktet når den ble kompilert til Wasm for å kjøre i nettleseren. Det kom etter hvert ut at disse native appene klarte å omgå problemer med bildekvalitet ved å bruke plattformspesifikke API-er som muliggjorde autofokus og andre funksjoner.

eBays løsning var å kjøre flere strekkodelesere ved siden av hverandre i nettleseren: eBay sin egen Wasm-baserte skanner, åpen kildekode-strekkodeleseren ZBar kompilert til Wasm, og den originale JavaScript-baserte skannerkoden.

The structure of the final web-based barcode scanner.

" data-credit="Image: eBay" rel="noopener noreferrer nofollow">

Strukturen til den endelige nettbaserte strekkodeskanneren.

Bilde: eBay

Bare ved å kjøre alle tre side om side i separate nettarbeidertråder, og ha hvert forsøk på å lese strekkoden, var skannernett-appen i stand til å håndtere nær 100% av strekkodene.

"Til vår overraskelse, med tre tråder som kjørte mot hverandre, var suksessgraden faktisk nær 100%. Dette var igjen helt uventet, " skriver teamet.

"JavaScript presterte veldig bra i visse scenarier, og denne faktoren så ut til å lukke gapet. Så ja, 'sats alltid på JavaScript.'"

I tester bidro ZBar til 53% av vellykkede skanninger, etterfulgt av eBay's tilpassede C ++ skanner med 34%, og til slutt JavaScript-biblioteket med 13%.

Den endelige nettbaserte strekkodeskanneren viste seg også å være en suksess hos kundene under en A / B-test, noe som førte til en økning på 30% av eBay-brukere som fullførte prosessen med å liste opp en gjenstand for auksjon på nettstedet.

"Teknologien utvikler seg i et veldig raskt tempo. Hver dag hører vi nye ting lanseres. Men bare noen få gjør en forskjell for kundene, og WebAss Assembly er en av dem, " sa teamet.

Executive Briefing Nyhetsbrev

Oppdag hemmelighetene for suksess med IT-ledelse med disse tipsene om prosjektledelse, budsjetter og håndtering av daglige utfordringer. Leveres tirsdager og torsdager

Registrer deg i dag

© Copyright 2021 | mobilegn.com