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:
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.
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
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: Ссылка
Tags und Links javascript node.js