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 什么问题!

会不会是 nanoseconeds 的原因

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(即 1ms),所以任何花费不到 1ms 的事情我都会得到“0”。这就是发生在你身上的事情,你的代码比clock()s 粒度运行得更快,所以你得到了最好的近似值,恰好是“0”

于 2013-03-07T19:56:31.640 回答