0
#include <conio.h>
#include <stdio.h>
#include<time.h>
double multi();

void main()
{
    clrscr();
    clock_t start = clock();
    for (int i = 0; i < 1000; i++)
    {
        multi();
        //printf("Answer (%d)",s);
    }
    clock_t end = clock();
    float diff;
    diff = (float) (end - start) / CLOCKS_PER_SEC;
    printf("time execution :%f", diff);
    getch();
}

double multi()
{
    double a;
    a = 5 * 5;
    return a;
}

実行時間は 0.000000 と表示されます。

それはナノ秒の原因でしょうか

4

1 に答える 1

0

機能の男性は次のようにclock()述べています。

clock() 関数は、プログラムが使用するプロセッサー時間の概算を返します。

概算なので、正確にはなりません。システムの粒度に依存します。clock()したがって、まず、次のような方法でシステムの粒度を確認できます。

clock_t start =clock(), end;
while(1)
{
    if(start != (end=clock()))
        break;
}
diff=(float)(end - start)/CLOCKS_PER_SEC;
printf("best time :%f",diff);

私のためにこれを行うと、0.001 (1 ミリ秒) が得られるため、実行に 1 ミリ秒未満しかかからないものはすべて、代わりに「0」が返されます。それがあなたに起こっていることです。あなたのコードはclock()粒度よりも速く実行されているため、たまたま「0」である最良の近似値が返されています。

于 2013-03-07T19:56:31.640 に答える