C++ 测量某些函数调用所用的时间

C++ 测量某些函数调用所用的时间,c++,C++,我想测量一些函数所花费的时间,比如打开文件或锁定互斥锁 到目前为止,我把搜索范围缩小到 high_resolution_clock 但是它给出了函数的结果时间,而我希望将用户花费的时间和系统花费的时间分开 如果我能用高分辨率的时钟,那怎么办?如果没有,我可以使用什么?如果您想测量程序(在执行时)所花费的时间,可以使用 high_resulution_clock #include <chrono> using namespace std; 您可以使用以下代码: high_

我想测量一些函数所花费的时间,比如打开文件或锁定互斥锁

到目前为止,我把搜索范围缩小到

    high_resolution_clock
但是它给出了函数的结果时间,而我希望将用户花费的时间和系统花费的时间分开


如果我能用高分辨率的时钟,那怎么办?如果没有,我可以使用什么?

如果您想测量程序(在执行时)所花费的时间,可以使用

high_resulution_clock

#include <chrono>
using namespace std;
您可以使用以下代码:

high_resulution_clock::time_point t1, t2;
double duration;
t1 = high_resulution_clock::now()
func();
t2 = high_resulution_clock::now()
duration = duration_cast<microseconds>(t2-t1).count();
高结果时钟::时间点t1,t2;
双倍持续时间;
t1=高结果时钟::现在()
func();
t2=高结果时钟::现在()
持续时间=持续时间(t2-t1).count();
现在在duration中,您有了t1调用Now()和t2调用Now()之间经过的时间度量,这意味着func()的执行时间

当然,这种方法并没有给出函数所需的确切时间,但它提供了一个很好的近似值。如果您试图比较不同数据结构和不同数据量之间的性能,这种方法非常有用

因此,如果您想测量用户(在程序的某个部分)所花费的时间,您可以使用上面的代码,使用需要用户输入的函数


如果您想更多地了解chrono,了解什么函数和时间表示最适合您的情况,我希望我已经尽我所能提供了帮助:

C++是通用的,它不了解底层系统,因此无法处理“系统时间”或“用户时间”之类的事情。为此,您需要使用本机和不可移植的功能。
high_resulution_clock::time_point t1, t2;
double duration;
t1 = high_resulution_clock::now()
func();
t2 = high_resulution_clock::now()
duration = duration_cast<microseconds>(t2-t1).count();