実行時間、キャッシュの動作などに関する詳細情報を取得するには、さまざまなアプローチがあります。最初に安定したコンピューティング環境を作成してください。プロセッサの周波数をロックして、信頼できる測定値を取得します。たとえば、BIOS で Intel SpeedStep を無効にします。バックグラウンドプロセスなどを避けます。
低レベルのパフォーマンス カウンター:
- 高解像度のカウンターを使用してコードを計測し、パフォーマンスを測定できます。パフォーマンス測定用の PAPI インターフェイスを見てみましょう。
高度なプロファイラー:
- パフォーマンス、オープン ソース。Perf はサンプルベースの測定を行い、複数のスレッドを完全にサポートして、さまざまなプロファイリング情報を表示します。たとえば、Perf フレームグラフは、コード内のホットスポットの概要を非常によく示しています。
- インテル VTune、コマーシャル。ハードウェア カウンター、スレッドごとのパフォーマンスなどからの詳細なキャッシュ統計が表示されます。データを解釈するには、ハードウェアに関するかなりの洞察が必要です。
上記のすべてで消費電力も測定できることに注意してください。
または、OS でスレッド切り替えのトレースを作成することにより、プログラムの動作を経時的に調べることができます。Eclipse の LTTng 統合をご覧ください。
並列処理を阻害する可能性のあるデータの依存関係、スレッドのオーバーヘッド、キャッシュの競合など、コードの実際の並列動作に関する詳細情報を確認したい場合は、Vector Fabrics の Pareon を参照してください (免責事項: 私は創設者の 1 人です)。ベクター生地の)。これはプロファイラーではなく、並列化のためのコード分析です。