tag

C++

共 57 篇文章。
全部文章JavaGo书稿TypeScript游戏开发独立开发者小游戏游戏设计Godot性能优化RustKafkaPython游戏引擎
cpp

C++ 序列化库选型实战:从 JSON 到 FlatBuffers

序列化是分布式系统与持久化存储的基础设施,选错库会让延迟、体积与可维护性同时受损。本文横向对比 C++ 生态中最常用的序列化方案:文本侧的 nlohmann/json 与 RapidJSON、二进制侧的 Protocol Buffers 与 FlatBuffers/Cap'n Proto,剖析各自的编码格式与零拷贝原理,给出 Schema 演进与向后兼容规则,附上吞吐量、延迟与序列化体积的实测数据,并总结一套可落地的选型决策表。

8 分钟阅读
C++ 序列化 Protobuf
cpp

C++ 依赖管理与包管理:vcpkg 与 Conan 实战

C++ 长期缺乏统一的包管理方案,第三方库往往靠手工编译、系统包管理器或 Git submodule 引入,导致构建不可复现、版本冲突频发。本文系统对比 vcpkg 与 Conan 两套主流方案:vcpkg 的 manifest 模式与注册表机制、Conan 的 conanfile 与包 ID 二进制兼容模型、锁文件与私有仓库搭建、二进制缓存加速 CI,以及与 CMake 的三种集成方式,最后给出一份可直接落地的依赖管理实践清单。

7 分钟阅读
C++ 包管理 CMake
cpp

C++ SIMD 与向量化实战:从自动向量化到 AVX2 Intrinsics

现代 CPU 每个核心都提供 128/256/512 位宽的向量寄存器,一次指令可以并行处理 4 到 16 个数据元素。本文系统讲解如何让 C++ 代码吃满这些向量单元:先讲清自动向量化的前提条件与用编译器报告定位失败原因的方法,再深入 SSE/AVX2 Intrinsics 手写、数据布局与内存对齐、掩码运算与水平归约技巧,最后给出跨编译器的可移植性封装方案,并用点积与图像处理两个实战案例量化加速比。

7 分钟阅读
C++ SIMD 性能优化
cpp

C++20 Modules 模块化与构建系统演进

头文件包含模型是 C++ 编译速度的最大瓶颈:宏污染、前向声明迷宫、重复模板实例化。C++20 Modules 从根本上替代了头文件机制,通过显式的 export/import 接口实现真正的模块化编译隔离。本文深入 module 定义、module partition、与既有头文件的互操作策略,以及 CMake 3.28+ 对 modules 的构建支持,帮助你在大型 C++ 项目中评估和落地 Modules。

7 分钟阅读
C++ C++20 CMake
cpp

C++ 现代设计模式:CRTP、类型擦除、PIMPL 与策略模式

C++ 的模板和类型系统为经典设计模式提供了独特的实现方式。CRTP 用静态多态替代虚函数开销,类型擦除在保持接口统一的同时抹除具体类型,PIMPL 将实现细节彻底隐藏,策略模式借助模板实现零成本抽象。本文深入这些现代 C++ 设计惯用法,展示如何用编译期计算和类型系统构建高性能、可扩展的架构。

7 分钟阅读
C++ 类型擦除 设计模式
cpp

C++ 异常安全与错误处理策略:noexcept、RAII 与 Herb Sutter 指引

C++ 异常机制是资源管理与错误传播的核心基础设施,但异常安全等级、noexcept 语义、异常开销与替代方案(std::expected)的权衡,往往让开发者感到困惑。本文从异常安全保证等级出发,系统梳理 noexcept 传播规则、Herb Sutter 的异常使用原则,以及 C++23 std::expected 作为无异常错误处理的新范式,帮助你在工程中做出正确的选择。

7 分钟阅读
C++ 错误处理