5

我有一个写入文件的函数。我需要使用两个参数来分析函数,所以我可以看到差异。(不要告诉我有关 Visual Studios Profiling 工具的事情,我想自己做)。我想应用这样的东西:

double start = getTime();
myFunction("param1");
double request = getTime() - start;
printf_s("Request time: %f", request);

我怎样才能做到这一点?(上面的只是伪代码,我不知道真正的函数名称)

4

5 回答 5

21

使用std::chrono,这是一个适用于您的代码的示例:

#include <chrono>
int main()
{
    using milli = std::chrono::milliseconds;
    auto start = std::chrono::high_resolution_clock::now();
    myFunction("param1");
    auto finish = std::chrono::high_resolution_clock::now();
    std::cout << "myFunction() took "
              << std::chrono::duration_cast<milli>(finish - start).count()
              << " milliseconds\n";
}
于 2015-06-22T17:42:53.500 回答
3

您可以使用:

  1. 一个std::clock变量并将其除以CLOCKS_PER_SEC以获得秒数(需要#include <ctime>
  2. 因为WinAPI您可以使用GetTickCount()并将其除以 1000 以获得秒数。
于 2013-08-03T08:20:55.057 回答
1

虽然已经很晚了但我会回答这个问题:可以使用 c++ 的 getTickCount() 函数。基本语法有点像:

double start=(double)getTickCount();
//Your code
.
.
.
start= ((double)getTickCount() - start)/getTickFrequency(); 
cout<<"time spent in executing the code ="<<start;
于 2016-07-20T10:17:23.757 回答
0

C++11 提供了std::chrono命名空间,它有一组标准的时间-日期函数和类型。请注意,该参考页面的示例完全符合您的要求。

我向你推荐这个 Bo Quian 的 youtube教程std::chrono

于 2013-08-03T08:31:32.903 回答
0

您可以使用 Windows API 函数:

查询性能计数器

查询性能频率

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644904(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ ms644905(v=vs.85).aspx

于 2013-08-03T08:23:53.293 回答