Ist der strikte Modus leistungsfähiger?

58

Macht es die Ausführung von Javascript in einem Browser im 'strict mode' generell leistungsfähiger? Führt einer der Hauptbrowser zusätzliche Optimierungen durch oder verwendet andere Techniken, die die Leistung im strikten Modus verbessern?

Um etwas anders zu formulieren, ist der strikte Modus neben anderen Zielen, Browsern zu ermöglichen, zusätzliche Optimierungen oder andere Leistungsverbesserungen einzuführen?

    
sje397 30.06.2010, 01:43
quelle

4 Antworten

18
  

Ist der strikte Modus unter anderem dazu gedacht, Browsern die Möglichkeit zu geben, zusätzliche Optimierungen oder andere Leistungsverbesserungen einzuführen?

Ob es beabsichtigt war , dies zu tun, bin ich nicht sicher, obwohl ich denke, dass die Antwort ja ist.

Aber ich kann mit Sicherheit sagen, dass der strikte Modus diese Möglichkeiten bietet, und Browser werden sie implementieren - unabhängig davon, ob die Bereitstellung dieser Möglichkeiten ein absichtliches Ziel für den ECMA-Ausschuss war. Ich würde jedoch nicht erwarten, dass all diese Gelegenheiten sofort ergriffen werden. In vielen Fällen ist das Mantra wahrscheinlich zuerst die Korrektheit, später die Performance, weil der strikte Modus momentan nicht weit verbreitet ist. (Ich arbeite an der JavaScript-Engine von Mozilla und habe verschiedene Teile des strikten Modus implementiert, und wir implementieren es als eine allgemeine Regel - obwohl ich mir wahrscheinlich eine oder zwei Ausnahmen vorstellen könnte, wenn ich es versuchte.)

    
Jeff Walden 09.01.2011, 23:50
quelle
19

Beim strict mode geht es nicht wirklich um Leistung, sondern um eine Variante der Sprache, das Hauptziel ist es, zu vermeiden, was als fehleranfällige Funktionen angesehen werden.

Im Grunde ist es das Ziel, die Sprache sicherer zu machen , viele semantische Änderungen einzuführen, außerdem wird eine zusätzliche Fehlerprüfung durchgeführt, und Fehler sind laut, in nicht striktem Code versagen Dinge nur im Stillen.

Über die Leistung denke ich, dass Browser-Anbieter es jetzt schwer haben, den strikten Modus zu implementieren. Das Problem ist, dass die JS-Engines größtenteils auf ECMAScript 3 basieren und die Implementierung des strikten Modus nicht einfach ist, da der Umfang von Strenge ist sehr flexibel, Sie können nicht-strikte und strenge Code mischen.

Siehe auch:

CMS 30.06.2010 02:22
quelle
10

Nach diesem Test kann "strict mode" etwa 25% schneller sein.

%Vor%

Dies kann hier getestet werden: Ссылка

Interessanterweise kann die Manipulation des Argumenten-Arrays im "strikten Modus" etwa 6-mal schneller sein! %Vor%

Hier ist der jsPerf-Test: Ссылка

    
Chris Nash 11.05.2015 09:09
quelle
3

Zum größten Teil nein . Wenn Sie das ECMAScript 5-Standarddokument genau untersuchen, werden Sie feststellen, dass so ziemlich alle Vorkommen von Strict Mode in den Pseudo-Code-Algorithmen betragen:

%Vor%

Es gibt zwei Dinge, die man beachten sollte:

  1. Die Prüfungen im Strict Mode waren in ECMAScript 3 nicht vorhanden. Obwohl es relativ leicht ist, führen konforme Implementierungen von JavaScript jetzt mindestens eine zusätzliche konditionale Überprüfung im Vergleich zu ihren ECMAScript 3-Gegenstücken durch. Ja ... Ich weiß, ein einziger Check wie dieser brennt nur sehr wenige Taktzyklen, aber Kleinigkeiten summieren sich
  2. Da der Strict-Modus in erster Linie eine Parsing-Zeitfunktion von JavaScript ist, wird Ihr bevorzugter Browser keine große Leistungseinbuße zeigen, wenn Strict Mode für eine Website (z. B. SunSpider) aktiviert ist. Das heißt, die Leistungseinbuße tritt auf, bevor Code ausgeführt wird, was bedeutet, dass für Endbenutzer wahrnehmbar ist, ist aber weitgehend unermesslich, wenn das Objekt Date verwendet wird Taktausführungszeit messen
Dave 23.05.2011 21:52
quelle

Tags und Links