C++11特性
关键库文件:
<
c
h
r
o
n
o
>
<chrono>
<chrono>
一般用法
#include <iostream>
#include <chrono>
#include <thread>
int main()
{
using namespace std::literals::chrono_literals //休眠1s中的s,必须使用这个空间
auto start = std::chrono::high_resolution_clock::now(); //当前时间
std::this_thread::sleep_for(1s); //当前线程休眠1秒
auto end = std::chrono::high_resolution_clock::now(); //当前时间
std::chrono::duration<float> duration = end - start; //时间差
std::cout << duration.count() << "s" << std::endl;
std::cin.get();
}
运行结果:1.00286s
分析:很接近1,但不绝对准确
封装作用域Timer类
#include <iostream>
#include <chrono>
class Timer
{
public:
Timer()
{
// 对象创建时,记录一次时间
start = std::chrono::high_resolution_clock::now();
}
~Timer()
{
// 对象销毁时,记录一次时间
end = std::chrono::high_resolution_clock::now();
// 持续时间,默认是秒,duration对象的.count()时间值
duration = end - start;
float ms = duration.count() * 1000.0f;
std::cout << "Timer took" << ms << " ms " << std::endl;
}
public:
std::chrono::time_point<std::chrono::steady_clock> start, end;
std::chrono::duration<float> duration;
};
void Function()
{
Timer timer; // 出Function()作用域后自动输出时间并且销毁
for (int i = 0; i < 100; i++)
{
std::cout << "Hello!\n"; //用\n的运行速度比endl快三分之一
}
}
int main()
{
Function();
std::cin.get();
}
release下输出结果:100个Hello!,时间花费为 40.8741ms