JavaScript Test auf V8

8
%Vor%

das Ergebnis ist: Zeit1: 1481ms, time2: 102ms,

Ich führe diesen Test auf nodejs, aber ich weiß nicht, warum der erste Test langsamer als der zweite läuft.

    
fsiaonma 18.11.2013, 03:29
quelle

2 Antworten

4

Dies liegt daran, dass die Optimierung aufgrund von Änderungen des Parametertyps unter der Haube stattfindet. Um das zu wissen, müssen wir wissen, was Optimierungs-V8 macht:

Inlining

Es ist eine wichtige Optimierung und entscheidend für den Leistungsschub. Es ersetzt den Funktionsaufruf durch den Funktionskörper, um die Ausführung zu beschleunigen. Wenn eine Funktion klein ist, wird sie inline sein. Dies setzt voraus, dass in Funktionsaufrufen die Parameter fest sind.

Optimierung

Der V8 führt die Optimierung unter bestimmten Annahmen durch. Wenn es falsch ist, muss es diese Optimierungen rückgängig machen, damit es den Code korrekt ausführen kann. Optimierungen sind schlecht, weil es Zeit braucht und der ersetzte Code weniger leistungsfähig ist.

Um dies in Aktion zu sehen, führen Sie den Code mit den Optionen --trace_opt --trace_opt_stats --trace_deopt --trace-inlining

aus %Vor%

Die erste Schleife wird aufgrund von Parameteränderungen nicht optimiert und läuft länger. Es kann nicht durch Cache-Treffer / Fehltreffer erklärt werden, da es keine Lese- / Schreibvorgänge gibt.

Quelle: Ссылка

    
user568109 18.11.2013, 11:20
quelle
1

Ich denke, es geht um Cache-Speicher. im ersten, Javascript nicht wissen Funktion ' add ' was tun. aber im zweiten Javascript verstehen, dass 'addNumber' Summe von x & amp; y und ' addText ' geben x+''+y

zurück     
Nainemom 18.11.2013 07:15
quelle

Tags und Links