C++ 运行程序的确切时间是多少?

C++ 运行程序的确切时间是多少?,c++,sorting,stl,ctime,C++,Sorting,Stl,Ctime,我想要运行程序的确切时间,我从clock()使用它。但是有一个问题,我不能给出小的n的确切时间,比如2000年 我希望它返回n=1000的正确答案 #include <iostream> #include <ctime> #include <algorithm> using namespace std; #define show_time(x, y) cout << endl << #x << " : " <<

我想要运行程序的确切时间,我从
clock()
使用它。但是有一个问题,我不能给出小的
n
的确切时间,比如2000年

我希望它返回n=1000的正确答案

#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;

#define show_time(x, y) cout << endl << #x << " : " << y << endl;

int main()
{
    int n;
    cin >> n;
    int *a = new int[n];

    for(int i=0; i<n; i++)
        a[i] = i;
    random_shuffle(a, a+n);
    int last = clock();

    //STL_sort:
    sort(a, a+n);
    int lastP = clock();

    show_time(STL_sort, (double)(lastP-last)/CLOCKS_PER_SEC);
    return 0;
}
#包括
#包括
#包括
使用名称空间std;

#定义显示时间(x,y)cout您在哪个平台上运行?如果你在Windows上,你可以试试


如果您可以访问C++11,那么有一个名为
chrono
的头文件,它具有可移植性(ish)

您在哪个平台上运行?如果你在Windows上,你可以试试


如果您可以访问C++11,那么有一个名为
chrono
的头文件,它具有可移植性(ish)

我发现这段代码中严重缺乏
std::vector
。在linux下,您可以执行
time./myprogram
,原因是在一个小N上执行速度很可能非常快,以至于完成所需的时间少于时钟的分辨率。所以lastP可能等于last,或者可能等于last+1。我发现这段代码中严重缺少
std::vector
。在linux下,您可以执行
time./myprogram
,原因是在一个很小的N上执行速度非常快,以至于完成所需的时间少于时钟分辨率。所以lastP可能等于last或者last+1.为什么这是关于
chrono
可移植性的-ish?因为std::chrono::high_resolution_clock使用了可用的最高分辨率计时器,所以虽然标头和类是可移植的,但确切的分辨率可能会因系统而异。哦,我没有想到这一点。谢谢你的邀请explanation@VittorioRomeo:更不用说它是最近才添加的,还有相当多的编译器在相对广泛的使用中,要么根本没有它,要么没有完全正确地实现它。为什么对
chrono
可移植性这么说呢?因为std::chrono::high_resolution_clock使用的是最高分辨率的分辨率计时器可用,因此虽然标头和类是可移植的,但确切的分辨率可能因系统而异。哦,我没有想到这一点。谢谢你的邀请explanation@VittorioRomeo:更不用说它是最近才添加的,因此仍有相当多的编译器在相对广泛的使用中,要么根本没有它,要么没有完全正确地实现它。