我的目标是通过查看运行多长时间来计算我的线程的性能,但是我遇到了一些问题:
我的代码如下:
#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秒版本?
答案 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;
使用的库和函数的链接:
作为额外的奖励,它不仅仅适用于Linux。
答案 1 :(得分:0)
打印double
:printf("%lf", dif);
编辑(更正):如果说明符是%f
或%lf
,则参数会被提升为double
。
此外,您使用的变量也不一致。对gettimeofday
的两次调用均使用start
变量。 end
在哪里使用?