C++超高精度计时器

#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;
};
  • 使用
_Clock _c;

/*耗时操作*/

_c.setStop();

运行输出

相关推荐

  1. C#Stopwatch类高精度计时功能

    2024-04-08 20:02:02       33 阅读
  2. C# Stopwatch 计时器

    2024-04-08 20:02:02       20 阅读
  3. c++复数计算器

    2024-04-08 20:02:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 20:02:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 20:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 20:02:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 20:02:02       20 阅读

热门阅读

  1. js与jq之间的联系(补)

    2024-04-08 20:02:02       15 阅读
  2. RPA投资:成本效益分析秘籍

    2024-04-08 20:02:02       14 阅读
  3. 基于 Spring Task实现单体项目架构的定时任务

    2024-04-08 20:02:02       16 阅读
  4. jquery

    2024-04-08 20:02:02       14 阅读
  5. js中filter,map,forEach,indexOf的用法和区别详解

    2024-04-08 20:02:02       15 阅读
  6. 网络安全教程及案例分析

    2024-04-08 20:02:02       14 阅读
  7. 前端开发语言都有哪些?

    2024-04-08 20:02:02       15 阅读
  8. 防抖和节流

    2024-04-08 20:02:02       13 阅读
  9. LeetCode 494. 目标和

    2024-04-08 20:02:02       18 阅读
  10. 【LeetCode热题100】【技巧】颜色分类

    2024-04-08 20:02:02       16 阅读
  11. Shell学习 - 2.24 Shell let命令:对整数进行数学运算

    2024-04-08 20:02:02       15 阅读