Skip to content
C++20 学习型白皮书入口

先学会验证再谈性能

这是一个以学习顺序为先的首页,面向希望从可运行示例、验证路径与证据标准进入现代 C++ 性能实践的读者。

把这里当作白皮书入口页:先判断这份指南是否适合你,再按建议顺序学习,最后走完首次运行路线,然后再进入更深的参考与方法论页面。

这份指南适合谁?

如果你需要的不是零散技巧,而是一条可核验的学习入口,这份指南就是为你准备的:

  • 想系统复习现代 C++ 性能主题、但不希望只看到结论的工程师
  • 需要把页面论断追溯到代码、测试和 preset 的评审者或面试官
  • 未来会维护这个仓库,需要先建立整体地图的接手者

这个仓库把性能建议视为必须能够编译、测试、基准比较并被证伪的对象。理想状态下,你应当能从首页上的任何结论直接追到对应的源文件、preset、基准或测试目标,而不需要猜。

建议学习顺序

建议先建立理解框架,再进入专题深水区:

  1. 先看学院概览,理解整套内容的教学组织方式。
  2. 再读模块总览,把模块与真实代码位置对上。
  3. 接着看验证原则,先知道什么才算证据充分。
  4. 需要理解仓库结构与测量方法时,再进入架构
  5. 日常查命令、排路线时,把实践手册参考当作随手册。

首次运行路线

第一次进入仓库时,优先走 preset 驱动的基线路线。这样最短,也最能保留项目原本的工程语义。

快速开始

先把基线构建与测试跑通,再去读更激进的优化页面。这样学习顺序会稳,也更容易判断后续结论是不是可信。

cmake --preset=debug && cmake --build build/debug && ctest --preset=debug
如需更完整的操作路线,请继续阅读快速开始指南

验证主张

结论类型在本仓库中的最低证据主要入口
“代码仍然正确工作”debug 配置、构建与 ctest --preset=debug验证原则
“这个优化具有代表性”releaserelwithdebinfo 构建,加基准或 profiler 输出性能方法论
“并发路径是安全的”单元或性质测试,加上同步改动时的 tsan验证与 Sanitizer
“文档仍然是最新的”链接、导航与 Pages 构建输出与仓库现状保持一致实践手册

白皮书地图

模块地图

模块主要代码表面典型证据最佳入口页
01. 现代 CMakeexamples/01-cmake-modern/CMakeLists.txtcmake/配置与目标级构建快速开始
02. 内存与缓存examples/02-memory-cache/tests/unit/memory/tests/property/memory_properties.cpp缓存敏感基准、perf stat模块总览
03. 现代 C++examples/03-modern-cpp/tests/unit/modern_cpp/基准对比与单元测试学习路径
04. SIMD 向量化examples/04-simd-vectorization/tests/unit/simd/tests/property/simd_properties.cpp向量化检查与 simd_bench优化决策树
05. 并发examples/05-concurrency/tests/unit/concurrency/tests/property/concurrency_properties.cpptsan、队列测试、扩展性基准验证原则
快速开始

优先采用 preset 驱动路径。这是最短、同时仍保留架构意图的进入方式。

cmake --preset=debug && cmake --build build/debug && ctest --preset=debug
如需更完整的操作路线,请继续阅读快速开始指南

面向熟练读者的提示

  • 面试官或评审者: 先读架构研究。这两部分最快暴露验证模型与外部上下文。
  • 未来维护者: 阅读模块总览仓库拓扑,以及 GitHub 上的 AGENTS.mdCLAUDE.md
  • 实践工程师: 先用实践手册获取命令,再在基线通过后进入 profiling 与 sanitizer 路线。

操作路线

技术规格

层面详情
C++ 标准C++17 最低,C++20 在有益处时使用
构建系统CMake 3.20+,基于 preset
平台以 Linux 为主;macOS 和 Windows 通过跨平台头文件支持
编译器GCC 11+、Clang 14+、MSVC 2022+
测试GoogleTest + RapidCheck(基于性质的测试)
基准测试Google Benchmark,perf 集成
SanitizerASan、TSan、UBSan,通过 CMake preset 启用
文档VitePress,双语(中/英),GitHub Pages 发布

次要入口

  • 贡献流程 继续为仓库贡献者保留,但不属于主要的专家阅读弧线。
  • 练习 继续作为刻意练习表面存在,但有意保持为次级入口,而不是主要架构叙事。

基于 MIT 许可证发布。