计算线程内的时间

时间:2015-11-12 02:29:53

标签: c++ time

我的目标是通过查看运行多长时间来计算我的线程的性能,但是我遇到了一些问题:

我的代码如下:

#include

thread() {
   struct timeval start, finish;

   gettimeofday(&start, NULL);
     -- code -- 
   gettimeofday(&start, NULL);

   double dif = ((end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec)*0.000001);
   printf("%f", dif);

}

我希望我的代码以秒和毫秒的格式打印,如:3.252或类似的东西,但我得到类似的东西:0.1615680.161717。

有谁知道如何将此格式转换为标准的x.xxxx秒版本?

2 个答案:

答案 0 :(得分:1)

C ++ 11的计时库让这一切变得简单。多么容易?这很简单:

必填包括:

#include <chrono>

线体:

std::chrono::time_point<std::chrono::high_resolution_clock> start, end;
start = std::chrono::high_resolution_clock::now();
//--code--
end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = end-start;
std::cout << elapsed.count() << std::endl;

使用的库和函数的链接:

chrono

high_resolution_clock

duration

作为额外的奖励,它不仅仅适用于Linux。

答案 1 :(得分:0)

打印doubleprintf("%lf", dif);

编辑(更正):如果说明符是%f%lf,则参数会被提升为double

此外,您使用的变量也不一致。对gettimeofday的两次调用均使用start变量。 end在哪里使用?