0

ANSI C で簡単なコードを書いたので、いくつかの測定を実行したいと思います。

実行時間を測定しました ( clock()Windows OS およびclock_gettime()Linux OS で関数を使用)。

ここで、このコードの実行中に、CPU が実行する IPS (1 秒あたりの命令数) の数を計算したいと思います。(はい、MIPS が哀れなパラメータであることは知っていますが、これでも、計算したいです)

また、実行に必要な CPI (Cycles Per Instruction) の数 (3 つの要素の追加やその他の操作など) を確認することもできます。Google は、計算機を使用して MIPS の数を計算する方法、私の CPU (クロック速度) に関する知識、簡単な計算、およびその他のパラメーター (CPI など) の束について述べていますが、それらを取得する方法については述べていません!

ローカル変数へのアクセスなど、実行に必要なクロックサイクル数を返す C/C++ 関数も見つかりませんでした。Intel/AMD による最新の CPU 用のリファレンス マニュアルを見つけるのにも問題があり、オペコードなどに関する情報が記載されています。

私のANSI Cコードは37回の操作を必要とすることを手動で計算しましたが、それらはCPU命令ではなくANSI C操作です。

4

1 に答える 1

0

Windowsで高精度のタイミングを取得する最も簡単な方法は、PerformanceCounter です。QueryPerformanceCounterの使用方法を参照してください。
次に、タイミングに関心のある操作を実行するいくつかの関数が必要です。キャッシングなどに少し注意する必要があるので、計算を数回実行して、時間の分布を確認します

于 2012-04-10T17:38:36.080 に答える