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

运行输出

相关推荐
jdlxx_dongfangxing1 小时前
C++ 序列式容器深度解析:vector、string、deque 与 list
c++·stl
小欣加油2 小时前
leetcode 904 水果成篮
c++·算法·leetcode
Tipriest_3 小时前
C++ csignal库详细使用介绍
开发语言·c++·csignal·信号与异常
qq_25929724733 小时前
QT-窗口类部件
c++·qt
啊我不会诶3 小时前
CF每日4题(1500-1700)
c++·学习·算法
kyle~3 小时前
C++---多态(一个接口多种实现)
java·开发语言·c++
Mark12775 小时前
Trie 树(字典树)
c++·mark1277
Jiezcode5 小时前
Unreal Engine ClassName Rule
c++·游戏·图形渲染·虚幻引擎
long_run6 小时前
C++之静态库 vs 动态库
c++
risc-v@cn11 小时前
【在ubuntu下使用vscode打开c++的make项目及编译调试】
c++·vscode·ubuntu