行业知识
C++基于多设计模式下的同步&异步日志系统day7(终)
2026-11-13 05:07:09
来源:互联网转载
C++基于多设计模式下的同步&异步日志系统day7(终)
作者主页:���热的陕西人
专栏链接:C++基于多设计模式下的同步&异步日志系统
欢迎各位大佬点赞关注收藏,留言
主要内容对项目的目录结构进行了梳理,以及测试了代码的性能,分别在云服务器和本地的虚拟机上进行了测试
文章目录
- C++基于多设计模式下的同步&异步日志系统day7(终)
- 1.项目目录结构梳理
- 2.项目性能测试代码的设计和实现
- 2.1测试工具的编写
- 2.2测试
- ①云服务器环境下:
- ②本地虚拟机:
1.项目目录结构梳理
-
Example
用于存储我们的样例代码文件
-
Extend
存储我们的拓展代码文件
-
Logs
存储项目的所有的头文件
-
PreSturdy
项目前期需要补充学习的代码内容文件
2.项目性能测试代码的设计和实现
测试三要素:①测试环境②测试方法③测试结果
2.1测试工具的编写
①可以控制写日志线程数量
②可以控制写日志的总数量
③分别对同步/异步日志器,进行性能测试
- 需要测试单写日志线程的性能
- 需要测试多写日志线程的性能
实现
- 封装一个接口,传入日志器名称,以及线程数量,以及日志数量,单条日志大小
- 在接口内,创建指定数量的线程,各自负责一部分日志的输出
- 在输出之前开始计时,在输出结束之后计时结束,所耗时间 = 结束时间 - 起始时间
- 每秒输出量 = 总日志数 / 总时间
- 每秒输出大小 = 日志数量 * 单个日志大小 / 总耗时
注意:异步日志输出这里,我们采用非安全模式,纯内存写入(不考虑实际落地的时间)
#include"../Logs/xupt.h"#include#include#includevoid bench(const std::string& logger_name, size_t thread_count, size_t msg_count, size_t msg_len){ //1.获取日志器 xupt::Logger::ptr logger = xupt::getLogger(logger_name); if(logger.get() == nullptr) //获取日志器失败 { return ; } std::cout threads.emplace_back([&, i]() { //4.线程函数内部开始计时 auto start = std::chrono::high_resolution_clock::now(); //5.开始循环写日志 for(int j = 0; j
-