__gnu_mcount_nc を使用して関数の終了時間をキャプチャする
組み込みプラットフォームでパフォーマンス プロファイリングを実行しようとして、スタックのみを記録する関数を実装する各関数エントリのフレームと現在のサイクル数により、呼び出し元/呼び出し先のグラフと頻繁に使用される関数に関する有益な洞察が得られました。ただし、関数の終了時間の可視性の欠如により、関数本体内で費やされた完全な時間を把握することが困難になりました。
GNU プロファイリング ツールのアプローチ
前述とは対照的に、実装では、gprof などの GNU プロファイリング ツールは、スタック サンプリングを利用することでこの制限を克服します。 gprof は、関数の開始と終了のタイミングに依存するのではなく、関数内の PC サンプルをカウントすることによって各関数の自己時間を測定します。このセルフタイムは、関数間の呼び出し回数に基づいて呼び出し元に分配されます。
スタック サンプリングの利点
PC サンプリングと比較して、スタック サンプリングでは次のようなメリットが得られます。いくつかの利点:
コール グラフとホット スポットの代替手段
コール グラフとホット スポットはいくつかの洞察を提供しますが、隠れたパフォーマンスの問題を露呈させないようにします。効果的なプロファイリングを行うには、ランダムな生のスタック サンプルを調べて、過度の時間消費の原因となっている関数とその呼び出しの理由を特定することをお勧めします。このアプローチにより、コード構造と最適化の可能性のある領域をより深く理解できます。
以上が組み込みシステムのパフォーマンス プロファイリングのために関数の終了時間を正確に取得するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。