Ersetzen von JavaScript: Wie eBay eine Web-App 50x schneller machte, indem es die Programmiersprache wechselte

Die besten Programmiersprachen für 2019: Top-Programmierkenntnisse, die Sie am meisten bezahlen Dies sind die Sprachen, die am meisten nachgefragt werden und die höchsten Gehälter bieten.

Entwicklerinhalte müssen unbedingt gelesen werden

  • Java und JavaScript dominierten in den 2010er Jahren die Softwareentwicklung
  • So werden Sie Entwickler: Ein Spickzettel
  • 10 Möglichkeiten, um Entwickler-Burnout zu verhindern (kostenloses PDF)
  • Python frisst die Welt: Wie das Nebenprojekt eines Entwicklers zur heißesten Programmiersprache der Welt wurde

Online-Marktplatz eBay hat gezeigt, wie es die Leistung einer anspruchsvollen Web-App mithilfe von WebAssembly um das 50-fache gesteigert hat.

Die "erstaunliche" Beschleunigung nach dem Wechsel von einer JavaScript-basierten zu einer weitgehend WebAssembly-basierten Web-App wurde vom eBay-Engineering-Team detailliert beschrieben. Die Leistungssteigerung habe dazu beigetragen, einen hochpräzisen Barcode-Scanner als Web zu erstellen App.

Durch das Kompilieren von Code in WebAssembly können Entwickler Apps erstellen, die im Webbrowser eine konstant hohe Leistung bieten, ähnlich wie Apps, die nativ ausgeführt werden.

eBay war bestrebt, diese Leistung für eine Webversion seines Barcode-Scanners zu nutzen, eine Funktion, die es in seinen Android- und iOS-Apps bietet, damit Verkäufer die von ihnen versteigerten Artikel scannen können.

"WebAssembly war anders. Es hat ein enormes Potenzial, wir hatten einfach nicht den richtigen Anwendungsfall. Nun, das hat sich kürzlich geändert", sagte das eBay-Software-Engineering-Team in einem eBay-Blogbeitrag.

Einer der Vorteile von WebAssembly (Wasm) besteht darin, dass es Code-Portabilität für eine Vielzahl von Sprachen bietet, sodass Entwickler Code, den sie für andere Plattformen geschrieben haben, in WebAssembly kompilieren können, damit er in den wichtigsten Webbrowsern ausgeführt werden kann.

Infolgedessen war eBay in der Lage, die vorhandene Version seines in C ++ geschriebenen Barcode-Scanners zu übernehmen und diese mithilfe von Emscripten für Wasm zu kompilieren, wobei der hier beschriebene Docker- und Node.js-basierte Ansatz angewendet wurde.

Nach einigen kleinen Kinderkrankheiten konnte das eBay-Team den Barcode-Scanner im Browser mithilfe eines Worker-Threads und JavaScript-Klebercodes ausführen.

Der Wasm-basierte Scanner war in der Lage, Bilder des Barcodes mit 50 Bildern pro Sekunde (FPS) zu verarbeiten, verglichen mit etwa 1 FPS in einem früheren JavaScript-basierten Scanner, den eBay getestet hatte. Dies war eine Beschleunigung, die das Team als "erstaunlich" bezeichnete.

Das Problem war, dass der Wasm-basierte Scanner in 40% der Fälle immer noch keine Barcodes erkennen konnte.

Das Team war anfangs verwirrt, warum derselbe C ++ - Code, der in etwa 100% der Fälle beim Kompilieren zu nativem Code für Android- und iOS-Apps funktionierte, beim Kompilieren zu Wasm zur Ausführung im Browser fehlschlug. Es stellte sich schließlich heraus, dass diese nativen Apps Probleme mit der Bildqualität mithilfe plattformspezifischer APIs umgehen konnten, die Autofokus und andere Funktionen ermöglichten.

Die Lösung von eBay bestand darin, mehrere Barcode-Scanner im Browser nebeneinander auszuführen: den eBay-eigenen Wasm-basierten Scanner, den in Wasm kompilierten Open-Source-Barcode-Leser ZBar und den ursprünglichen JavaScript-basierten Scannercode.

The structure of the final web-based barcode scanner.

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

Die Struktur des endgültigen webbasierten Barcode-Scanners.

Bild: eBay

Nur wenn alle drei nebeneinander in separaten Web-Worker-Threads ausgeführt wurden und jeder Versuch unternommen wurde, den Barcode zu lesen, konnte die Scanner-Web-App nahezu 100% der Barcodes verarbeiten.

"Zu unserer Überraschung lag die Erfolgsquote bei drei gegeneinander laufenden Themen in der Tat nahe bei 100%. Dies war wiederum völlig unerwartet", schreibt das Team.

"JavaScript hat in bestimmten Szenarien eine sehr gute Leistung erbracht, und dieser Faktor schien die Lücke zu schließen. Also ja, wetten Sie immer auf JavaScript."

In Tests trug ZBar zu 53% der erfolgreichen Scans bei, gefolgt vom benutzerdefinierten C ++ - Scanner von eBay mit 34% und schließlich der JavaScript-Bibliothek mit 13%.

Der endgültige webbasierte Barcode-Scanner erwies sich auch bei Kunden während eines A / B-Tests als Erfolg. Dies führte zu einer 30% igen Zunahme der eBay-Nutzer, die den Prozess der Auflistung eines Artikels zur Auktion auf der Website abgeschlossen haben.

"Die Technologie entwickelt sich sehr schnell weiter. Jeden Tag hören wir, wie neue Dinge eingeführt werden. Aber nur wenige machen einen Unterschied für die Kunden, und WebAssembly ist einer davon", sagte das Team.

Executive Briefing Newsletter

Entdecken Sie die Geheimnisse des Erfolgs von IT-Führungskräften mit diesen Tipps zum Projektmanagement, zu Budgets und zum Umgang mit alltäglichen Herausforderungen. Lieferung dienstags und donnerstags

Heute anmelden

© Copyright 2021 | pepebotifarra.com