【发布时间】:2013-03-22 21:12:46
【问题描述】:
我正在编写一个程序并尝试计算给定代码块运行时经过的秒数。之后,我想以秒为单位打印运行代码块所花费的总时间。我写的是:
time_t start = time(0);
// block of code
double seconds_since_start = difftime(time(0), start);
printf("seconds since start: %2.60f\n", seconds_since_start);
我已将printf() 打印到小数点精度 60,但所有时间仍为 0.000000...
我的时间函数有错误吗?我很难相信我要求计时的任务不会以 60 位小数精度计算任何时间。
【问题讨论】:
-
time() 返回秒数。如果经过的时间小于 1 秒,您将始终在我们的输出中看到 0。
-
您可以随时使用
<chrono>。 -
@craig65535:并非总是如此!如果您在第二次更改之前开始计时,则不会。
-
@TonyK:哦,太好了,所以即使实际经过的时间小 1000 倍,现在您也会看到“1 秒”。
-
@TonyK 是的。我应该说的是,你会看到时钟变化,而不是经过的时间。因此,对于耗时 900 毫秒的作业,您可能会看到“自启动以来 0 秒”,对于耗时 1 毫秒的作业,您可能会看到“自启动以来 1 秒”,具体取决于您的时钟与秒变化的接近程度。