神鹰网站建设公司,西安建设城市信息网站,廊坊企业免费建站,wordpress素锦下载1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址
1. 关键词
C 时间处理 统计函数运行时间 跨平台
2. 问题
C如何简单便捷地实现“函数运行时间的统计”功能#xff1f;
3. 解决思路
类的构造函数#x…1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址
1. 关键词
C 时间处理 统计函数运行时间 跨平台
2. 问题
C如何简单便捷地实现“函数运行时间的统计”功能
3. 解决思路
类的构造函数会在对象初始化的时候被调用。类的析构函数会在对象销毁的时候被调用。局部对象的生命周期对象实例化也就是初始化时开始退出作用域时结束。
4. 代码实现
4.1. timecount.h #pragma once#include cstdint
#include atomic
#include stringnamespace 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::atomicuint64_t start_time_;};} // namespace4.2. timecount.cpp
#include timecount.h
#include timeutil.h
#include strfmt.h
#include inner/logger.hnamespace 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);}
} // namespace5. 测试代码
#pragma once#include iostream
#include timecount.h
#include common.hppvoid 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.004955us7. 源码地址
更多详细代码请查看本人写的C 通用工具库: common_util, 本项目已开源代码简洁且有详细的文档和Demo。