キャッシュミス、I/O、割り込み、ページエラーの待ち時間を無視し、アルゴリズムで使用されるサイクル数を測定したいと思います。理想的には、無制限のプリロードキャッシュ、レイテンシなし、無制限の帯域幅I / O、およびシステム上で実行されている他のエントリがないアプリケーションを実行する完全なシステムのサイクル数です。
私は実行しているものを制限してこれをしたくありません。ページの損失、中断などの計算を減らしたいです。
コードを計測できません。プロセスを実行し、それに理想的な時間を取得したいと思います。目標は、ロードされたサーバー上のO(.)理論的複雑性に近づきながら、繰り返し性の高いアルゴリズムタイミング結果を得ることです。
カーネルやコアライブラリをインスツルメンテーションまたは特殊化する場合は問題ありません。アプリではありません。どんなアイデアがありますか?
答え1
最新のCPUには、さまざまな項目を測定するパフォーマンスカウンタレジスタがあります(「サイクル」よりも複雑ですが)。
perf
これらのカウンタを使用して測定を実行するツールです。ここもっと学ぶ。