3

1つの命令またはいくつかの命令を実行するのにかかる時間を見つけて、ミリ秒単位で出力する必要があります。誰かがこのための小さなコードスニペットを共有できますか?

ありがとう..プロジェクトでいくつかの命令を実行するのにかかる時間をこの測定値で使用する必要があります。

4

3 に答える 3

4
#include<time.h> 
main()
{
clock_t t1=clock();
printf("Dummy Statement\n");
clock_t t2=clock();
printf("The time taken is.. %g ", (t2-t1));

以下のリクもご覧ください。 printf を使用して clock_t を出力する正しい方法は何ですか?

http://www.velocityreviews.com/forums/t454464-c-get-time-in-milliseconds.html

于 2012-11-01T06:39:18.090 に答える
3

1 つの命令の実行には、1 ミリ秒よりもはるかに短い時間がかかります。また、複数の命令を測定しようとすると、複雑になります (命令を複数回呼び出すループはどうでしょう)。

また、使用できるほとんどのタイミング関数は、functionsです。つまり、命令も実行します。1 つの命令の時間を計測したい場合は、使用しているプロセッサの仕様を調べて、何サイクルかかるかを確認するのが最善の方法です。

これをプログラムで行うことはできません。

編集:

質問を更新したので、いくつかの手順を参照してください。一部のプロセッサでは、サブミリ秒の時間を測定できます。環境を知れて良かったです。これは x86 と Linux で動作しますが、他の環境では異なります。

クロック取得時間により、サブナノ秒の精度が可能になります。または、自分で rdstc 命令を呼び出すこともできます (マルチプロセッサまたは smp システムではこれでうまくいきます。たとえば、異なるプロセッサで命令を実行するなどして、間違ったことを測定している可能性があります)。

于 2012-11-01T06:12:35.530 に答える
0

実際に命令を完了する時間は、クロックサイクル時間と、命令がプロセッサを通過するパイプラインの深さによって異なります。デイブが言ったように、あなたはプログラムを作ることによってこれを本当に見つけることができません。OSが提供するある種のタイミング関数を使用して、いくつかの小さな命令セットを完了するのにかかるCPU時間を測定できます。これを行う場合は、メモリや分岐に依存するいかなる種類の命令も使用しないようにしてください。理想的には、ある種の論理演算または算術演算を実行する可能性があります(したがって、おそらくCでインラインアセンブリを使用します)。

于 2012-11-01T06:24:42.683 に答える