C++超高精度计时器

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();

运行输出

相关推荐
山河木马1 分钟前
前端学习C++之:.h(.hpp)与.cpp文件
前端·javascript·c++
2401_891957312 分钟前
list的一些特性(C++)
开发语言·c++
米饭「」1 小时前
C++AVL树
java·开发语言·c++
心愿许得无限大1 小时前
Qt 常用界面组件
开发语言·c++·qt
GiraKoo2 小时前
【GiraKoo】C++17的新特性
c++
Rockson2 小时前
C++如何查询实时贵金属行情
c++·api
shenyan~2 小时前
关于 c、c#、c++ 三者区别
开发语言·c++
mit6.8243 小时前
[vroom] docs | 输入与问题定义 | 任务与运输工具 | json
c++·自动驾驶
charlie1145141913 小时前
如何使用Qt创建一个浮在MainWindow上的滑动小Panel
开发语言·c++·qt·界面设计
cpp_learners6 小时前
QML与C++交互之创建自定义对象
c++·qt·qml