我在IBM AIX中执行以下代码。
int main(void)
{
printf( "start\n");
double time1 = (double)clock(); /* get initial time */
time1 = time1 / CLOCKS_PER_SEC; /* in seconds */
boost::this_thread::sleep_for(boost::chrono::seconds(5));
/* call clock a second time */
double time2 = (((double)clock()) / CLOCKS_PER_SEC);
double timedif = time2 - time1;
printf( "The elapsed time is %lf seconds, time1:%lf time2:%lf CLOCKS_PER_SEC:%ld\n",
timedif));
}
结果是:
2018-04-07 09:58:37开始
2018-04-07 09:58:42经过的时间是0.000180秒,时间1:0.000000
时间2:0.000181 CLOCKS_PER_SEC:1000000
我不知道为什么经过时间为0.000180(为什么不是5)?
最佳答案
根据手册
返回程序消耗的处理器时间。
它是程序消耗的CPU时间,不是物理时间。睡眠程序不会消耗CPU时间。因此,换句话说,它是从main
到sleep
的时间间隔加上sleep
之后到返回的时间间隔。
如果要获取系统/实时信息,请查看std::chrono::system_clock
类。
#include <chrono>
using std::chrono::system_clock;
system_clock::time_point time_now = system_clock::now();