2

コンパイラーの最適化によって改善される可能性のあるコード (関数) をライブラリーで見つけました (主なアイデアとして - コンパイラーに深く入り込むための良いものを見つけるため)。そして、この関数の実行時間の計測をスクリプトで自動化したい。ライブラリの低レベル関数であり、引数を取得するため、これを抽出するのは困難です。したがって、ライブラリ/アプリケーション/環境を変更せずに、この関数 (正確な CPU 時間) を正確に測定する方法を見つけたいと考えています。それを達成する方法はありますか?

ラッパーを作成することもできますが、近い将来、パフォーマンス テスト用にさらに多くのアプリケーションが必要になるため、すべてのアプリケーションに対してラッパーを作成するのは非常に見苦しいと思います。

PS: 私のコードは、ある種の「Performance Monitor Control」レジスタを持つ ARM (armv7el) アーキテクチャで実行されます。Linuxカーネルの「perf」について学びました。しかし、それが私に必要なものかどうかわかりませんか?

4

1 に答える 1

0

プロファイリングまたは改善したい機能のソースコードにアクセスできるかどうか、つまり、検討中のライブラリを再コンパイルできるかどうかが明確ではありません。

最近の Linux システムで最近の GCC (少なくとも 4.6) を使用gprofしている場合、(ライブラリを再コンパイルできると仮定して) またはそれ以上oprofile(再コンパイルせずに使用できる) のようなプロファイラーを使用でき、カスタマイズできます。あなたのニーズに合わせてGCC。

他の測定と同様に、プロファイリングによって観測された現象が変わる可能性があることに注意してください。

最適化のために GCC コンパイラをカスタマイズすることを検討している場合は、GCC プラグインを作成するか、その目的のためにMELT拡張を作成することを検討してください (MELT は、GCC を拡張するための高レベルのドメイン固有言語です)。また、独自のプロファイリング目的で GCC を (MELT を使用して) カスタマイズすることもできます。

于 2012-07-20T11:35:25.767 に答える