2016-09-19 12 views
5

node.jsアプリケーションのパフォーマンスを最適化しようとしています。そのため、V8のJITコンパイラの動作を分析しています。 node --trace_deopt --trace_opt --code_comments --print_optcode ...を介してアプリケーションを実行している場合V8で最適化されていないコードのJSソースを探します

、出力は次のような多くの定期的な行が含まれています。

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

をどのように私はjavascriptのコードは0x490a8b4aa69に対応しているかを見つけることができますか?

フル出力はhereです。

+0

あなたの関数にはいつも名前を付けます:-) – Bergi

+1

@Bergi実際のアドバイスはありますか? :) –

+0

これはv8(またはNode.js)のどのバージョンですか?そのエラーメッセージは、 'v8/src/objects.cc'の10200行目であったが、これ以上はありません。 *基本的には、特定のトレースに対して現在最適化が採用されていないことを意味します。使用されなかったか、または十分に頻繁に使用されなかった可能性があります。おそらくNode.jsライブラリ関数だった可能性があります。提供されたアドレスはメモリ内にあります。デバッガをv8に接続し、その場所にSharedFunctionInfoのシンボルをロードする必要があります。おそらくメッセージを生成する行のブレークポイント* – TylerY86

答えて

2

このエラーメッセージは、10200行目の周囲にあり、v8/src/objects.ccであったが、それ以上はありません。基本的には、特定のトレースに対して現在最適化が使用されていないことを意味します。使用されなかったか、または十分に頻繁に使用されなかった可能性があります。おそらくNode.jsライブラリ関数だった可能性があります。提供されたアドレスはメモリ内にあります。デバッガをv8に接続し、その場所にSharedFunctionInfoのシンボルをロードする必要があります。メッセージを生成する行にブレークポイントがある可能性があります。

最適化されていないものがたくさんあるので、最適化されていないものを知ることは有用ではないと思います... --trace_optの出力を取り出して、それ以外はすべてそうでないものと仮定します。最適化されたコードのチェックが行われたというヒントのようなものでしたが、時間はありませんでした。たぶん--trace_codegenを試して、後方に作業してください。

これは非常に時間のかかる研究のようです。
Thorsten Lorenz男はこれについて質問するです。

関連する問題