在C++中,可以通过clock()或者time()实现计时功能,那么二者有什么差别呢?先通过简单的代码验证一下
#include <iostream>
#include <ctime> //time()
#include <thread> //this_thread
int main()
{
//clock()计算时间并打印
clock_t time0 = clock();
std::cout << "****************第一次打印clock()*****************" << std::endl;
std::cout << time0 << "\n\n";
//time()计算时间并打印
int64_t now = (int64_t)time(nullptr);
std::cout << "*****************第一次打印time()****************" << std::endl;
std::cout << now << "\n\n";
//将time()得到的时间格式化输出
tm ts;
localtime_s(&ts, &now);
char szNow[64];
strftime(szNow, sizeof(szNow), "%Y%m%d%H%M%S", &ts);
std::cout << "格式化时间输出:" << szNow << std::endl;
//睡眠10000毫秒,也就是10秒
std::cout << "sleep_for 睡眠10000ms" << "\n\n";
std::this_thread::sleep_for(std::chrono::milliseconds(10000));
//再次计算clock()并打印
clock_t time1 = clock();
std::cout << "******************第二次打印clock()***************" << std::endl;
std::cout << time1 << "\n\n";
//再次计算time()并打印
int64_t now1 = (int64_t)time(nullptr);
std::cout << "*****************第二次打印time()****************" << std::endl;
std::cout << now1 << "\n\n";
//格式化时间输出
localtime_s(&ts, &now1);
strftime(szNow, sizeof(szNow), "%Y%m%d%H%M%S", &ts);
std::cout << "格式化时间输出:" << szNow << std::endl;
return 0;
}
在代码中,分别调用clock()与time(),接下来看下输出结果:
****************第一次打印clock()*****************
63
*****************第一次打印time()****************
1576070589
格式化时间输出:20191211212309
sleep_for 睡眠10000ms
******************第二次打印clock()***************
10071
*****************第二次打印time()****************
1576070599
格式化时间输出:20191211212319
两个函数首先是单位不同,clock()返回的时间单位是毫秒(ms), time()返回的时间单位是秒(s),其次,二者的计算方法不同,time()是从1970到现在总秒数。