2016-09-19 3 views
5

Ich versuche, um die Leistung einer node.js Anwendung zu optimieren und damit das Verhalten der V8 der JIT-Compiler Ich bin zu analysieren.entsprechende JS Quelle Code finden, das nicht durch V8 optimierte

Beim Ausführen der Anwendung über node --trace_deopt --trace_opt --code_comments --print_optcode ..., die Ausgabe enthält viele wiederkehrenden Linien wie folgt aus:

[didn't find optimized code in optimized code map for 0x490a8b4aa69 <SharedFunctionInfo>] 

Wie kann ich herausfinden, welche Javascript-Code zu 0x490a8b4aa69 entspricht?

Die vollständige Ausgabe ist here zur Verfügung.

+0

nennen Sie immer Ihre Funktionen :-) – Bergi

+1

@Bergi jeder realen Welt Beratung? :) –

+0

Welche Version von V8 (oder Node.js) war das? Diese Fehlermeldung war in der Nähe der Zeile 10200 von 'v8/src/objects.cc', ist aber nicht mehr. * Es bedeutet im Grunde, dass keine Optimierung für eine bestimmte Spur verwendet wurde. Möglicherweise weil es ungenutzt war oder nur selten benutzt wurde. Möglicherweise war es eine Node.js-Bibliotheksfunktion. Die angegebene Adresse befindet sich im Speicher. Sie müssten einen Debugger an v8 angehängt haben und das Symbol für die SharedFunctionInfo an diesem Ort laden. Möglicher Haltepunkt auf der Linie, die die Nachricht auch produziert. * – TylerY86

Antwort

2

Diese Fehlermeldung verwendet um 10200 von v8/src/objects.cc Linie zu sein, ist aber nicht mehr. Es bedeutet im Grunde genommen, dass für eine bestimmte Spur derzeit keine Optimierung verwendet wurde. Möglicherweise weil es ungenutzt war oder nur selten benutzt wurde. Möglicherweise war es eine Node.js-Bibliotheksfunktion. Die angegebene Adresse befindet sich im Speicher. Sie müssten einen Debugger an v8 angeschlossen haben und das Symbol für die SharedFunctionInfo an diesem Ort laden. Möglicherweise Breakpoint in der Zeile, die auch die Nachricht erzeugt.

Ich glaube nicht, dass es nützlich ist zu wissen, was nicht optimiert wurde, da es viele Dinge gibt, die nicht optimiert werden ... nehmen Sie einfach die Ausgabe von --trace_opt und nehmen Sie an, alles andere ist nicht. Es war nur ein Hinweis darauf, dass eine Überprüfung für optimierten Code durchgeführt wurde, und keine war da, die Zeit. Vielleicht versuchen Sie --trace_codegen und arbeiten rückwärts.

Dies scheint eine sehr zeitaufwendige Sache zu sein, um zu erforschen.
Thorsten Lorenz wäre der Typ danach zu fragen.