Webassembly frühe Eindruck

2018.11.10 11.35.56

JavaScript wurde eine beherrschende Stellung in Web - Programmierung, Web - Seite im Laufe der Evolution hat, hat sich die JavaScript - Performance - Verbesserung kontinuierliche Reform unterzogen.
Es war ursprünglich Ausführungsgeschwindigkeit ist nicht schnell, in dem ein relativ großer Wendepunkt im Jahr 2008, viele Browser einführte Just-in-Time - Compiler (wird JIT, später in dem Artikel erwähnt wird), stark die Effizienz der Implementierung von JavaScript zu verbessern es erlaubt auch JavaScript verwendet werden kann , in dem back-End - Bereich zu starten.

Mit Rich Web - Inhalten der Seite in 3D - Spiele, Audio- und Videoverarbeitung hat sich mehr und mehr Aufmerksamkeit zu erreichen , aber wie man ein besseres Gefühl der Geschwindigkeit zu schaffen , und die Erfahrung in der Web - Seite ist es immer eine Herausforderung.
JavaScript als schwach typisierte Sprache, Logik in dem vorderen Ende der wachsenden Stärke der Zusammenarbeit zwischen dem Bedürfnis nach mehr Einschränkungen besser helfen Programmierer.
So gibt es einige Probleme zu lösen versuchen:

  1. Die Syntax ist zu flexibel.
  2. Leistung.

Die Syntax ist zu flexibel

Denn zu diesem Zeitpunkt erschien es auf dem Markt Typoskript, JS statische Typprüfung zu verbinden.
Aber diese schließlich in JS kompiliert werden, nicht auf die Leistung verbessert hat.

Lösung von 曾经 决 方 Verfahren

  • Google entwickelt Dart, an den Browser eine neue virtuelle Maschine direkt Dart Programm auszuführen Leistung zu verbessern, aber nur Google-Browser, nicht viele Leute benutzen.
  • Firefox gestartet asm.js, es ist eine Teilmenge von JS ist, lassen Sie den Motor zur Leistungsoptimierung asm.js tun. asm.js zu einfacher Syntax, Einschränkungen und vieles mehr.

Was ist Webassembly

Webassembly ist ein neues Bytecode - Format .
JS und führen andere Interpretation erforderlich ist , und der darunter liegende Maschinencode Bytecode Webassembly sehr ähnlich, schneller Ladevorgang, so dass die Leistung in Bezug auf die JS interpretierte stark verbessert.
High-Level - Programmiersprachen kompilieren die Bytecode in Webassembly virtuelle Maschine laufen zu lassen, Browser - Anbieter tun müssen, ist eine virtuelle Maschine Gerät nach Webassembly Spezifikation.
Da sehr nah an Maschinencode, kann es sehr schnell in Maschinencode übersetzt werden entsprechend der Architektur.

优点 von Webassembly

  • Kleine Größe.
    Browser lädt nur die kompilierte Bytecode, Logik als mit dem gleichen Volumen von JS viel kleiner.
  • Laden Sie schnell.
    Kleine Abmessungen, keine Notwendigkeit , die Umsetzung zu erläutern.
  • Weniger Kompatibilitätsprobleme.
    Webassembly entwickeln sich nach ein paar gute Änderungen. Lokale Kompatibilitätsprobleme , die Schnittstellenspezifikation JS und Webassembly Brücke entstehen.

Warum ist es schneller als JavaScript?

Erstens verbraucht die Zeit laufen JavaScript folgende Aufgaben:

  1. Parsen: Code → Quellcode-Interpreter verbrachte Zeit ausgeführt werden können;
  2. Kompilieren + Optimierung: Baseline-Compiler und Compiler-Optimierungszeit ausgegeben (PS: Einige optimierende Compiler nicht den Haupt-Thread ausgeführt wird, wird es nicht im Preis enthalten)
  3. Re-Optimierung: JIT die optimierten Hypothese Fehler finden, entsorgen Sie die Zeit-Code-Optimierung ausgegeben. Einschließlich Gewichtsoptimierung der Zeit, verlassen und zum Basis Time-Compiler zurückgegeben.
  4. Zeitcode-Ausführung: Ausführung
  5. Garbage Collection: Müllabfuhr, aufzuräumen die Erinnerung an die Zeit
    diese Aufgaben durch das Kreuz durchgeführt werden, wie der laufenden Auflösungsprozess , wenn ein anderer Code ausgeführt wird , während andere kompiliert werden.

Diese Stufen nicht entsprechend der Reihenfolge, gibt es einen Teil des Codes in Phase sein können, einige können in der Stufe 3, und dergleichen. Dieses Gesetz ist das, was JIT gebracht, auch weil diese, JS Effizienz es verbessert hat.
Auch Webassembly Zwischencode selbst, nicht wie der JS - Code als abstrakter Syntaxbaum wird dann zerlegt umgewandelt werden. Vor dem Anfang des Codes optimiert kompiliert wird, müssen Sie nicht die Art kennen.
Und JIT tut verschiedene Compiler unterschiedlichen Optimierungsprozess, weshalb ein Stück Code schnell in Google Chrome laufen kann, aber in anderen Browsern nicht so schnell, aber Webassembly hat zu diesem Zeitpunkt des Optimierungsprozess erfuhr , können Sie diese Optimierungszeit weglassen. Auf der Garbage Collection, entworfen wird Webassembly Entwickler Code schreiben zu ermöglichen, manuell wiederherstellen, wird der Browser standardmäßig automatisch gestellt, so manchmal in der Tat gibt es keine Notwendigkeit , zu überprüfen.

Webassembly kann in eine High-Level-Sprache kompiliert werden

Derzeit Webassembly kann in eine High-Level-Sprache erstellt werden, sind:

  • AssemblyScript
    Grammatik und Typoskript konsistent.
  • c \ c ++
    offizieller empfohlene Weg.
  • Rust
    grammatische Komplexität.
  • Kotlin
    Syntax und Java, JS ähnlich.
  • Golang:
    Die Syntax ist einfach. Für Webassembly noch nicht offiziell in Stufen freigegeben.

Die Aussichten von Webassembly

Zusammengefasst Webassembly ist es ideal für Szene viel Rechen erfordert:

  • Verarbeitung von Audio- und Video im Browser.
  • dom diff mit Webassembly Umschreiben kann die Leistung verbessern. RN der Anwendungsleistung verbessert werden kann.
  • Große 3D-Web-Spiele (egrets Motor hat damit begonnen, die Verwendung Webassembly zu erkunden).

Epilog

Diese Schlussfolgerung ist ich eine Reihe von Artikeln und Informationen online und geschrieben, für das Studium und Referenz integrieren, danke.

Ich denke du magst

Origin www.cnblogs.com/rimochiko/p/12640975.html
Empfohlen
Rangfolge