小工具知识网

当前位置: 首页 > 行业知识 > C++基于多设计模式下的同步&异步日志系统day7(终)

行业知识

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 

上一篇:Nginx - directory index of “/usr/share/nginx/html/“ is forbidden

下一篇:穿越火线怎么卡服务器bug?