cpp
#include <chrono>
#include <QDebug>
#pragma execution_character_set("utf-8")
/*1 秒(s) = 1,000 毫秒(ms) = 1,000,000 微秒(μs) = 1,000,000,000 纳秒(ns)*/
class _Clock {
public:
_Clock() : m_StartTimepoint(std::chrono::high_resolution_clock::now()) {}
void setStop() {
auto endTimepoint = std::chrono::high_resolution_clock::now();
// 转纳秒,并计算自纪元(Epoch)以来的纳秒数
auto startNs = std::chrono::time_point_cast<std::chrono::nanoseconds>(m_StartTimepoint).time_since_epoch().count();
auto endNs = std::chrono::time_point_cast<std::chrono::nanoseconds>(endTimepoint).time_since_epoch().count();
// 时间差,代码执行时间的纳秒数
auto ns = endNs - startNs;
// 微秒
std::chrono::microseconds micro = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::nanoseconds(ns));
auto us = micro.count();
// 毫秒
std::chrono::milliseconds milli = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::nanoseconds(ns));
auto ms = milli.count();
// 秒
std::chrono::seconds seconds = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::nanoseconds(ns));
auto s = seconds.count();
qDebug() << "转换cast \t 耗时:" << ns << " ns \t" << us << " us \t" << ms << " ms \t" << s << " s";
auto us2 = ns / 1000.; // 微秒
auto ms2 = ns / 1000000.; // 毫秒
auto s2 = ns / 1000000000.; // 秒
qDebug() << "比例: \t 耗时:" << ns << " ns \t" << us2 << " us \t" << ms2 << " ms \t" << s2 << " s";
}
private:
std::chrono::time_point<std::chrono::high_resolution_clock> m_StartTimepoint;
};
- 使用
cpp
_Clock _c;
/*耗时操作*/
_c.setStop();
运行输出