测量 C++ 中函数调用的执行时间
Measure the execution time of a function call in C++
如何测量 C++
中 Windows
中一行代码的执行时间。我正在插入大约 1,00,000 条记录 boost::multi_index_container
,如下所示:
while(...) //read a single record from a csv file until EOF
{
...
while(...) // split the record into components based on delimiter
{
...
}
//insert into boost::multi_index_container
}
我需要找出插入所有记录所需的时间,但不包括循环的执行时间。在插入函数之前启动 timer
或任何东西,并在函数调用之后计算经过的时间,结果为 0 nanoseconds
。所以我无法通过总结各个时间来计算时间。解决方法是什么?
在 Windows,您可以使用 QueryPerformanceCounter 获得准确的测量值。
可能与 How to calculate a time difference in C++ 重复。
有很多方法可以做到这一点。我喜欢的一个使用 chrono。
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
high_resolution_clock::time_point t1 = high_resolution_clock::now();
//your code here
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto duration = duration_cast<microseconds>( t2 - t1 ).count();
cout << duration;
return 0;
}
如何测量 C++
中 Windows
中一行代码的执行时间。我正在插入大约 1,00,000 条记录 boost::multi_index_container
,如下所示:
while(...) //read a single record from a csv file until EOF
{
...
while(...) // split the record into components based on delimiter
{
...
}
//insert into boost::multi_index_container
}
我需要找出插入所有记录所需的时间,但不包括循环的执行时间。在插入函数之前启动 timer
或任何东西,并在函数调用之后计算经过的时间,结果为 0 nanoseconds
。所以我无法通过总结各个时间来计算时间。解决方法是什么?
在 Windows,您可以使用 QueryPerformanceCounter 获得准确的测量值。
可能与 How to calculate a time difference in C++ 重复。 有很多方法可以做到这一点。我喜欢的一个使用 chrono。
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
high_resolution_clock::time_point t1 = high_resolution_clock::now();
//your code here
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto duration = duration_cast<microseconds>( t2 - t1 ).count();
cout << duration;
return 0;
}