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

运行输出

相关推荐
念恒1230629 分钟前
网络基础
linux·网络·c++
mct1231 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
ziguo11221 小时前
Windows API 文件操作超级指南——从入门到内核
c++·windows·visualstudio
zhangfeng11333 小时前
Ascendc 大语言模型框架 AscendCraft 和pypto 的区别 pypto生成算子c++源码吗
c++·人工智能·语言模型·算子开发
一只小灿灿3 小时前
C++ 修饰符全面详解
开发语言·c++
code_pgf3 小时前
C/C++ 中 `typedef` 关键字详解
c语言·c++
会周易的程序员4 小时前
js-shm: 高性能 Node.js 共享内存模块
开发语言·javascript·c++·node.js·共享内存·shm
2023自学中5 小时前
imx6ull 开发板 贪吃蛇, C++11 SDL2 无硬件GPU优化版
linux·c++
anscos5 小时前
为CUDA 代码引入静态分析
c++·工业软件·功能检测
众少成多积小致巨5 小时前
C++ 规范参考(中)
c++