Chromeデバッガの関数列の「(プログラム)」とは何ですか?
Chromeデバッガの関数列の「(プログラム)」とは何ですか?
回答:
(program)
Chrome自体、他のすべてのコードを呼び出すツリーのルートです...ネイティブコードからJavaScriptへのジャンプ、リソースの読み込みなどがどこかで開始する必要があるため、そこにあります :)
ツリービューの例は、Chromeデベロッパーツールのドキュメントで確認できます。
(プログラム)はツリーのルートではなく、ネイティブコードであると思います。
このスレッドを参照してください:
https://bugs.webkit.org/show_bug.cgi?id=88446
つまり、main()よりもシステムコールに似ています。
どうやらそれはアイドル時間を含みます。また、(プログラム)の一部のプロファイリングは、chrome:// profiler /から利用できます。
@Nickが言うように、どこかから始めなければなりません。
CPUプロファイラーの部分は、gprofと同じ概念に基づく他の多くのプロファイラーのようです。
たとえば、自分で編集できるいくつかのコードに大きな配列のバブルソートのようなものが存在しない限り、selfはほとんど役に立たない数値です。ありそうもない。
合計は呼び出し先を含める必要があるため、より便利です。ただし、ブロックされている時間と実行時間の間にサンプルが取得されない限り、完全にCPUにバインドされたプログラムを除いて、それはまだかなり役に立ちません。
コードの行ではなく、関数ごとにこれらの統計を提供します。つまり、(合計パーセントに頼ることができる場合)関数のコストがかかることを意味します。スタブなどの方法でなんとかして時間をゼロにできる場合、そのパーセントは節約できる時間です。
したがって、コストのかかる関数に焦点を当てる場合は、最適化できるものを探して関数内を探す必要があります。そのためには、関数内のコード行間で時間を細分する方法を知る必要があります。コード行ごとにコストがかかっていた場合、それらの行に直接移動します。
Zoomなど、ラインレベルで報告する実時間のスタックサンプラーなど、より優れたプロファイラーを入手できるかどうかはわかりません。ここに私がそれをする方法があります。