asm.js ist kein schneller Weg um Javascript-ähnlichen Code auszuführen. Es ist eine schnellere Möglichkeit, Code auszuführen, der bereits auf die Abstraktionsebene des Maschinencodes reduziert ist. Sie scheinen zu stark die Gewinne überschätzen:
- Wenn Sie JS können Entwickler C++ schreiben, als ob es JS ist, Sie mit fugly Code am Ende, die so schnell wie C nicht annähernd ist ++ könnte auch auf andere Weise sein und fehlerhaft.
- Viele potenzielle Engpässe, wie etwa DOM-Manipulation und Netzwerklatenz, werden überhaupt nicht davon beeinflusst, wie schnell Ihr Code ausgeführt wird.
- Für viele Programme wird die Beschleunigung von einer schnelleren Implementierung der Sprache durch die Beschleunigung von High-Level-Optimierungen in den Schatten gestellt. Mit anderen Worten, etwas schneller zu arbeiten ist schön, aber überhaupt nicht schneller.
diesen Weg zu gehen hat auch erhebliche Nachteile:
- Sie haben weg throw Ihre Arbeitscode und neu schreiben sie (einschließlich Bugs) in einer Sprache, die meisten Ihrer Mannschaft gewann‘ Ich weiß fast genauso gut, wenn überhaupt.
- Ab sofort steckt die Technologie noch in den Kinderschuhen. Sie würden Ihr Unternehmen oder gar ein wichtiges Produkt nicht darauf setzen. Selbst wenn es gelingt, wird es im Vergleich zu JavaScript immer eine Nischentechnologie sein. Dies disqualifiziert es nicht für professionelle Arbeit, aber es macht viele Dinge schwieriger.
- IIUC, Sie können nicht direkt die meisten Dinge tun, die JS über die Verarbeitung von Zahlen hinaus tun kann, Sie können nur JS-Funktionen aufrufen, die dem Modul asm.js explizit angeboten werden. Das heißt, dass Sie in Javascript immer mindestens einen Haufen Klebecode benötigen und (wie oben erwähnt), wenn dies Ihre Engpässe beinhaltet, haben Sie eigentlich nichts gewonnen.
Die einzigen Arten von Code, die ich erwarte von asm.js genug zu gewinnen, zu verwenden sind:
- Bestehende-Code, der in JavaScript nicht bereits geschrieben. Aus dem einzigen Grund, den größten Teil des Portierungsaufwands zu sparen.
- Schweres Zahlen-Crunching, das nicht mit dem Browser interagiert. (Denken Sie: Wie oft tun Sie das? Und wollen Sie wirklich die Mühe machen, es in C/C++ zu schreiben und es mit JS zu verbinden?)
- Dinge, die von Natur aus auf dem Niveau von Abstraktion asm.js unterstützt, wie z. B. Compiler, die Maschinencode-ähnliche Anweisungen ausgeben.
Berühren Sie nicht C++, außer Sie können tatsächlich den Unterschied zwischen Ihrem JS und asm.js * fühlen *. – DCoder
Sehr selten "tut" JavaScript wirklich viel, um einen Unterschied zu machen. Sicher, es gibt einige Javascript, die etwas Zeit brauchen, um es zu tun, und es gibt einige schlecht geschriebene Javascript, die viel zu lange dauert. Aber das Kompilieren löst das letztere nicht wirklich. –
@allfox Dein Mischen von 2 Dinge hier. 1. Quercompilieren von C/C++ zu Javascript könnte schneller und 2. asm.js über Javascript wird fast immer schneller sein.Aber wollen Sie etwas über das Erste oder das Letztere wissen? – abergmeier