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

运行输出

相关推荐
唠玖馆几秒前
C++11
c++
云泽8082 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
初願致夕霞9 小时前
C++11:类型推导与完美转发复盘笔记
c++
小猪写代码9 小时前
C++中什么是类,什么是对象
c++
钓鱼的肝12 小时前
梳理(1-5)
c++·经验分享·笔记·算法·青少年编程
jimy114 小时前
readelf 查看“派生类”的vtable符号
开发语言·c++
蒸蒸yyyyzwd14 小时前
cpp 选手秋招学习笔记 day37 面经学习
c++·八股
YYYing.14 小时前
【C++进阶系列 (七)】C++ RTTI 深度剖析:从 typeid 到 dynamic_cast 的底层之旅
开发语言·c++·c/c++·rtti
钓鱼的肝16 小时前
csp-j-s总结(2)
c++·经验分享·笔记·算法·青少年编程
重生的黑客16 小时前
Qt 常用控件精讲(1):QWidget 核心属性全解 —— 从 geometry 到 qrc 与 QSS
c++·qt·qwidget·qss·常用控件