在c ++中计算函数的执行时间(visual studio 2010)

时间:2014-02-04 07:26:33

标签: c++ visual-studio-2010 visual-studio

我使用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.如何以更小的单位测量时间

3 个答案:

答案 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高分辨率性能计数器。致电QueryPerformanceFrequencyQueryPerformanceCounter