我使用c ++编写代码并使用Visual Studio 2010.我正在尝试计算函数执行所需的时间,这是我的代码
double sum=0;
clock_t start_s=clock();
for(int j=1;j<size;j++)
{
int key=data[j];
int i=j-1;
while(i>=0 && data[i]>key)
{
data[i+1]=data[i];
i=i-1;
}
data[i+1]=key;
}
clock_t stop_s=clock();
sum=((double)(stop_s - start_s)/CLOCKS_PER_SEC);
但问题是时间计算为0.如何以更小的单位测量时间
答案 0 :(得分:1)
clock()
将为您提供1毫秒的分辨率。
如果您想要更高的分辨率,请使用QueryPerformanceCounter功能和QueryPerformanceFrequency
答案 1 :(得分:1)
一种可能的解决方案是运行此代码段,比如说100,000次,然后计算平均时间
double sum=0;
clock_t start_s=clock();
int x = 0;
while (x < 100000)
{
for(int j=1;j<size;j++)
{
int key=data[j];
int i=j-1;
while(i>=0 && data[i]>key)
{
data[i+1]=data[i];
i=i-1;
}
data[i+1]=key;
}
x++;
}
clock_t stop_s=clock();
sum=((double)(stop_s - start_s)/CLOCKS_PER_SEC)/100000; //average time
答案 2 :(得分:0)
看起来clock()
在Windows上返回毫秒级分辨率。
要获得更好的粒度,您应该使用Windows高分辨率性能计数器。致电QueryPerformanceFrequency
和QueryPerformanceCounter
。