测量 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;
  }