# Tools **Repository Path**: Mdzj/Tools ## Basic Information - **Project Name**: Tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-01-08 - **Last Updated**: 2025-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一、Variant VS nlohmann::json: | 功能 | 我的Variant库 | nlohmann::json | |---------------------|---------------|----------------| | 400万数据反序列化耗时 | 21ms | 1544ms | | 依赖 | 仅STL | 仅STL | | 动态扩展 | 支持 | 支持 | | 跨平台 | Windows/Linux | Windows/Linux | ## 二、简单使用 博客:https://blog.csdn.net/qq_41979948/article/details/152086955?spm=1001.2014.3001.5501 ```cpp #include "include/Variant.h" #include int main() { Variant v; v["id"] = 1001; v["name"] = "test"; std::cout << v << std::endl; // 输出v的内容 // 序列化到二进制 const std::vector& binary = v.ToBinaryString(); // 从二进制反序列化 Variant v2; v2.FromBinaryString(binary); std::cout << v2["name"] << std::endl; // 输出test return 0; } ``` 工业级/游戏级系统基础设施,拒绝臃肿依赖,追求极致性能 项目地址:https://gitee.com/Mdzj/Tools 项目价值:独立设计并实现一套跨平台、高性能、零第三方依赖的C++基础组件库,包含线程安全队列、异步日志、序列化、事件循环、配置系统等核心模块,部分模块性能超越主流开源库,为未来工业/游戏项目提供坚实底层支持。 ### 核心模块与硬核优化: > **ThreadSafeQueue(线程安全队列)**
> 基于循环数组实现阻塞/非阻塞双模,无锁队列,实测吞吐 >= 500万次/秒 > **AsyncLogger(异步日志系统)**
> 支持多模块分级、按大小/时间自动切割、异步落盘(主线程零阻塞) > **高性能Variant(序列化之王)**
> 支持任意类型(基本/自定义/嵌套)的二进制/Json序列化,注册式自定义序列化器
> 三大优化:预分配内存、避免递归、移动语义。200万数据下,二进制序列化比nlohmann::json快1.5倍(161ms vs 317ms),反序列化快15倍(59ms vs 904ms)
> 设计目标:网络协议打包、配置系统、数据交换
> *“如果你需要:
> 在 C++ 项目内部传递结构化数据
> 字段可能动态变化(如插件、脚本)
> 要求高性能(毫秒级响应)
> 不想引入 Qt/Boost/Protobuf
> nlohmann::json序列化反序列化慢
> 那么,Variant 就是你在找的工具。”*
> *“它不是 Protobuf 的替代品,而是 Protobuf 无法覆盖场景的补充。”*
> 博客:https://blog.csdn.net/qq_41979948/article/details/152086955?spm=1001.2014.3001.5501 > **EventLoop + ThreadPool(事件驱动框架)**
> 基于优先队列的事件循环,支持消息/IO/定时器/自定义事件
> 任务自动投递到线程池,支持同步/异步调用、跨线程投递、优雅关闭
> 正在扩展为“信号槽”机制,实现对象间解耦通信 > **ConfigManager(防崩溃配置系统)**
> 基于Variant实现ini/Json读写,支持默认值、防删除保护、自动保存
> 设计目标:彻底解决“配置缺失导致崩溃”问题 > **跨平台支持**
> 所有模块均在 Windows + Linux 双平台测试通过,零平台相关代码
> 使用条件编译/CMake实现无缝切换