【发布时间】:2017-10-07 01:55:00
【问题描述】:
我需要知道我的程序经过的时间(以秒为单位)。只是经过的时间,我没有在两者之间做任何事情,所以我不需要两个事件之间的时间,我想做的只是在代码中。
clock_t begin = clock();
float timeElapsed = (float)begin/(CLOCKS_PER_SEC);
cout << timeElapsed << endl;
问题是,“时间”正在打印,但不是以秒为单位。我什至将它与天文钟进行了比较,它绝对不是以秒为单位的。当屏幕上出现“1.27818”之类的东西时,我预计它是 1.27818 秒,但显然不是。到达 1 需要太多时间,而这个时间绝对不是一秒。这是怎么回事? “(float)begin/(CLOCKS_PER_SEC)”不是应该在几秒钟内返回吗?
更新
我这样做了:
clock_t begin = clock();
float timeElapsed = (float)(clock() - begin)/(CLOCKS_PER_SEC);
cout << timeElapsed << endl;
但我得到的值是这样的:
0
1e-06
1e-06
0
1e-06
1e-06
2e-06
1e-06
【问题讨论】:
-
使用std::chrono。
-
经过的时间是两个clock()调用之间的差。
-
我不认为你的程序开始时clock()是0。
-
在 linux 上,您可以在编译/执行前加上
time命令。例如time x.cpp/time ./a.out -
它是特定于操作系统的,除非你只使用 C 中的
std::chrono或<time.h>。在 Linux 上读取 time(7);您有不同类型的时间,实时时间、经过时间、单调时间、线程 cpu 时间、进程 cpu 时间。顺便说一句,在短时间内,硬件可能不够精确
标签: c++