C++ 时间处理-统计函数运行时间
- 1. 关键词
- 2. 问题
- 3. 解决思路
- 4. 代码实现
- 4.1. timecount.h
- 4.2. timecount.cpp
- 5. 测试代码
- 6. 运行结果
- 7. 源码地址
1. 关键词
C++ 时间处理 统计函数运行时间 跨平台
2. 问题
C++如何简单便捷地实现“函数运行时间的统计”功能?
3. 解决思路
- 类的构造函数:会在对象初始化的时候被调用。
- 类的析构函数:会在对象销毁的时候被调用。
- 局部对象的生命周期:对象实例化(也就是初始化)时开始,退出作用域时结束。
4. 代码实现
4.1. timecount.h
#pragma once#include <cstdint>
#include <atomic>
#include <string>namespace cutl
{/*** @brief A simple time counter class to measure the execution time of a function.**/class timecount{public:/*** @brief Construct a new timecount object* The constructor will record the begin time of the function calling.* @param func_name*/timecount(const std::string &func_name);/*** @brief Destroy the timecount object* The desctructor will record the end time of the function calling and calculate the execution time.*/~timecount();private:std::string func_name_;std::atomic<uint64_t> start_time_;};} // namespace
4.2. timecount.cpp
#include "timecount.h"
#include "timeutil.h"
#include "strfmt.h"
#include "inner/logger.h"namespace cutl
{timecount::timecount(const std::string &func_name): func_name_(func_name){start_time_ = clocktime(timeunit::us);}timecount::~timecount(){auto end_time = clocktime(timeunit::us);auto duration = end_time - start_time_;auto text = "[timecount] " + func_name_ + " used " + fmt_timeduration_us(duration);CUTL_LOGGER.info("", text);}
} // namespace
5. 测试代码
#pragma once#include <iostream>
#include "timecount.h"
#include "common.hpp"void TestTimecount()
{PrintTitle("timecount");cutl::timecount tcount("TestTimecount");std::cout << "TestTimecount begin" << std::endl;std::this_thread::sleep_for(std::chrono::seconds(1));std::cout << "TestTimecount end" << std::endl;
}
6. 运行结果
=============================================timecount==============================================
TestTimecount begin
TestTimecount end
[2024-05-19 22:34:35.853][I]]0x7ff844a9b100](cutl) [timecount] TestTimecount used 01s.004955us
7. 源码地址
更多详细代码,请查看本人写的C++ 通用工具库: common_util, 本项目已开源,代码简洁,且有详细的文档和Demo。
相关文章:
C++ 时间处理-统计函数运行时间
1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址 1. 关键词 C 时间处理 统计函数运行时间 跨平台 2. 问题 C如何简单便捷地实现“函数运行时间的统计”功能? 3. 解决思路 类的构造函数&#x…...
JAVA面试题大全(十五)
1、Zookeeper 是什么? zookper是一个分布式的,开放源码的分布式应用程序协调服务。是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护…...
使用python对指定文件夹下的pdf文件进行合并
使用python对指定文件夹下的pdf文件进行合并 介绍效果代码 介绍 对指定文件夹下的所有pdf文件进行合并成一个pdf文件。 效果 要合并的pdf文件,共计16个1页的pdf文件。 合并成功的pdf文件:一个16页的pdf文件。 代码 import os from PyPDF2 import …...
Day50 | 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结
代码随想录算法训练营Day50 | 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结 LeetCode 309.最佳买卖股票时机含冷冻期 题目链接:LeetCode 309.最佳买卖股票时机含冷冻期 思路: 四个状态。 保持持有股票,保持卖出股票…...
Steam在连接至服务器发生错误/连接服务器遇到问题解决办法
Steam作为全球最大的数字游戏分发平台,构建了一个活跃的玩家社区,用户可以创建个人资料,添加好友,组建群组,参与讨论,甚至直播自己的游戏过程。通过创意工坊,玩家还能分享自制的游戏模组、地图、…...
kafka 工作流程文件存储
爬虫组件分析 目录概述需求: 设计思路实现思路分析1.kafka 工作流程2.kafka 文件存储 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for…...
贪心算法4(c++)
过河的最短时间 题目描述 输入 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过,如果…...
【无标题】yoloV8目标检测与实例分割--目标检测onnx模型部署
1. 模型转换 ONNX Runtime 是一个开源的高性能推理引擎,用于部署和运行机器学习模型,其设计的目标是优化执行open neural network exchange (onnx)格式定义各模型,onnx是一种用于表示机器学习模型的开放标准。ONNX Ru…...
深入理解与防御跨站脚本攻击(XSS):从搭建实验环境到实战演练的全面教程
跨站脚本攻击(XSS)是一种常见的网络攻击手段,它允许攻击者在受害者的浏览器中执行恶意脚本。以下是一个XSS攻击的实操教程,包括搭建实验环境、编写测试程序代码、挖掘和攻击XSS漏洞的步骤。 搭建实验环境 1. 安装DVWAÿ…...
初步认识栈和队列
Hello,everyone,今天小编讲解栈和队列的知识!!! 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&…...
插件:NGUI
一、版本 安装完毕后重启一下即可,否则可能创建的UI元素不生效 二、使用 Label文字 1、创建Canvs 2、只有根节点的这些脚本全部展开才能鼠标右键创建UI元素 3、选择字体 Label添加打字效果 Sprite图片 1、选择图集 2、选择图集中的精灵 InvisibleWidget容器 用来…...
网络爬虫原理及其应用
你是否想知道Google 和 Bing 等搜索引擎如何收集搜索结果中显示的所有数据。这是因为搜索引擎对其档案中的所有页面建立索引,以便它们可以根据查询返回最相关的结果。网络爬虫使搜索引擎能够处理这个过程。 本文重点介绍了网络爬虫的重要方面、网络爬虫为何重要、其…...
串口中断原理及实现
一、串口的原理 SM0、SM1——串行口工作模式 SM0SM1模式特点00模式0移位寄存器方式,用于I/O口扩展01模式18位UART,波特率可变10模式29位UART,波特率为时钟频率/32或/6411模式39位UART,波特率可变 TI、RI——发送、接收中断标志位 TITI0 允许发送>TI1 发送完成后…...
课时136:变量进阶_变量实践_高级赋值
2 变量进阶 2.1 变量实践 2.1.1 高级赋值 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 所谓的高级赋值,是另外的一种变量值获取方法,这里涉及到更多我们学习之外的一些shell内置变量格式,其实这部分…...
牛客网刷题 | BC99 正方形图案
目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…...
启动小程序F12窗口管理器
如何使用小程序F12任务窗口管理器教学流程 一、引言 小程序的开发者们,是否希望有一款工具能帮助你们更好地管理任务窗口? 二、前置准备 观看视频教程 访问B站视频链接:https://www.bilibili.com/video/BV1aa4y197UU/?spm_id_from333.9…...
完全背包之零钱兑换I
上次分享完完全背包问题的解决思路后,这次分享一道和完全背包有关的leetcode题。 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果…...
Flutter 中的 FittedBox 小部件:全面指南
Flutter 中的 FittedBox 小部件:全面指南 在Flutter的丰富布局小部件中,FittedBox扮演着一个独特而重要的角色。它是一个灵活的组件,用于将子组件的大小和位置适应到给定的约束条件中。本文将提供FittedBox的全面指南,帮助你了解…...
Java的线程的使用
一.两种创建线程的方式 1.继承Thread类(匿名内部类) 创建方式: 1.定义一个子类继承Thread,重写run方法 2.创建子类对象, 3.调用子类对象的start方法(启动还是执行的run方法) 优缺点&#x…...
行为型模式 (Python版)
模板方法模式 """案例:写简历内容:最近有个招聘会,可以带上简历去应聘了。但是,其中有一家公司不接受简历,而是给应聘者发了两张公司自己定制的简历表,分别是A类型的简历表和B类型的简历表…...
Cursor 3 Agents Window 实操:IDE 退居二线,Agent 编排成了主角
Cursor 3 Agents Window 实操:IDE 退居二线,Agent 编排成了主角 4月2日,Cursor 发布了 3.0 版本(代号 Glass)。这次更新的核心变化只有一句话:编辑器不再是默认界面,Agents Window 是。 不是加了…...
DL/T 645与DL/T 698协议优劣对比与使用方法,一文看懂两者区别和使用方法!
目录 引言 一、协议背景与设计哲学 1.1 DL/T 645协议:面向过程的“点对点”设计 1.2 DL/T 698协议:面向对象的“系统级”设计 二、协议架构与技术特性对比 2.1 帧结构与数据表示 2.2 数据模型与扩展性 2.3 通信方式与物理层支持 三、安全机制对…...
专业的成都全铝家具哪家好
在寻找成都专业的全铝家具定制服务时,四川方与圆铝作全铝家具有限公司无疑是值得考虑的优质选择。这家位于成都华阳滨江天樾2栋27楼2号的专业工作室,以其八年匠心深耕和独特优势,在成都全铝家具市场中脱颖而出。为什么选择方与圆铝作…...
Scratch创意编程:飞翔小鸟游戏设计与实现
1. 从零开始搭建游戏场景 第一次打开Scratch时,那个橘色小猫的默认界面可能会让你觉得无从下手。别担心,我们先把游戏场景拆解成几个基础模块:背景、主角小鸟、障碍物水管。点击右下角的"选择一个背景"按钮,我建议使用渐…...
从Bash迁移到Zsh:Oh My Zsh实战避坑指南(含性能对比)
从Bash迁移到Zsh:Oh My Zsh实战避坑指南(含性能对比) 如果你长期使用Bash,可能会对Zsh的流畅补全和主题系统产生好奇。但迁移不只是换个Shell那么简单——环境变量继承、脚本兼容性和性能差异都可能成为隐形陷阱。本文将用实测数据…...
如何用BilibiliDown轻松下载B站视频:免费跨平台视频下载器终极指南
如何用BilibiliDown轻松下载B站视频:免费跨平台视频下载器终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/…...
为什么87%的AI项目卡在MVP之后?:2026技术雷达图暴露5个被低估的工程化盲区
第一章:AI原生软件研发技术雷达图2026版全景概览 2026奇点智能技术大会(https://ml-summit.org) 2026版AI原生软件研发技术雷达图由ML Summit联合CNCF AI Working Group、IEEE Software AI Engineering Task Force共同发布,覆盖7大核心维度、42项关键技…...
Photoshop CS6 分享
下载链接Photoshop CS6 好用链接:https://pan.quark.cn/s/35e0b2cbe8094:/^tX0KdDR5jR^%第二步:双击exe文件打开即可\n三:软件介绍\n\n\n原版安装复杂、占满 C 盘,新版要求高配置带不动?今天给大家安排一款「宝藏版本」…...
NativeFB:车规级原生帧缓冲驱动框架设计与实践
1. NativeFB:面向CARIAD车载信息娱乐系统的原生帧缓冲驱动框架1.1 项目定位与工程背景NativeFB 是专为大众集团 CARIAD 车载软件平台设计的轻量级、高确定性帧缓冲(Framebuffer)驱动框架。其核心目标并非通用 Linux 图形栈的替代品࿰…...
(手把手实战指南)利用NoneBot2与QQ官方API,从零构建智能群聊机器人
1. 环境准备与项目初始化 想要搭建一个QQ群聊机器人,首先需要准备好开发环境。我推荐使用Python 3.8版本,这是目前NoneBot2最稳定的支持版本。如果你还没有安装Python,可以去官网下载最新版本。 安装好Python后,我们需要创建一个虚…...
