使用std::chrono,代码如下:
//头文件
#include <iostream>
#include <chrono>
#include <string>
#include <thread>
// 类定义
class ScopeTimer {
public:
using Duration = std::chrono::duration<float, std::milli>;
using TimePoint = std::chrono::time_point<std::chrono::steady_clock, Duration>;
public:
ScopeTimer() = delete;
ScopeTimer(const ScopeTimer&) = delete;
ScopeTimer(const std::string& name) :
name_(name), start_(std::chrono::steady_clock::now()), end_()
{}
~ScopeTimer() {
end_ = std::chrono::steady_clock::now();
std::cout << name_ << " take " << (end_ - start_).count() << " ms." << std::endl;
}
private:
std::string name_;
TimePoint start_;
TimePoint end_;
};
// 测试
void Test1() {
ScopeTimer st("I'm test1");
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
void Test2() {
ScopeTimer st("I'm test2");
std::this_thread::sleep_for(std::chrono::milliseconds(30));
}
int main(int argc, char* argv[])
{
Test1();
Test2();
return 0;
}
结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d06e130d1afc4dd2a6aa184baf5c786f.png)