学院
理解如何阅读仓库、教学模块如何映射到代码,以及什么证据才算合格。
这是一个以学习顺序为先的首页,面向希望从可运行示例、验证路径与证据标准进入现代 C++ 性能实践的读者。
把这里当作白皮书入口页:先判断这份指南是否适合你,再按建议顺序学习,最后走完首次运行路线,然后再进入更深的参考与方法论页面。
如果你需要的不是零散技巧,而是一条可核验的学习入口,这份指南就是为你准备的:
这个仓库把性能建议视为必须能够编译、测试、基准比较并被证伪的对象。理想状态下,你应当能从首页上的任何结论直接追到对应的源文件、preset、基准或测试目标,而不需要猜。
建议先建立理解框架,再进入专题深水区:
第一次进入仓库时,优先走 preset 驱动的基线路线。这样最短,也最能保留项目原本的工程语义。
先把基线构建与测试跑通,再去读更激进的优化页面。这样学习顺序会稳,也更容易判断后续结论是不是可信。
cmake --preset=debug && cmake --build build/debug && ctest --preset=debug| 结论类型 | 在本仓库中的最低证据 | 主要入口 |
|---|---|---|
| “代码仍然正确工作” | debug 配置、构建与 ctest --preset=debug | 验证原则 |
| “这个优化具有代表性” | release 或 relwithdebinfo 构建,加基准或 profiler 输出 | 性能方法论 |
| “并发路径是安全的” | 单元或性质测试,加上同步改动时的 tsan | 验证与 Sanitizer |
| “文档仍然是最新的” | 链接、导航与 Pages 构建输出与仓库现状保持一致 | 实践手册 |
| 模块 | 主要代码表面 | 典型证据 | 最佳入口页 |
|---|---|---|---|
| 01. 现代 CMake | examples/01-cmake-modern/、CMakeLists.txt、cmake/ | 配置与目标级构建 | 快速开始 |
| 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.cpp | tsan、队列测试、扩展性基准 | 验证原则 |
优先采用 preset 驱动路径。这是最短、同时仍保留架构意图的进入方式。
cmake --preset=debug && cmake --build build/debug && ctest --preset=debugAGENTS.md 与 CLAUDE.md。| 层面 | 详情 |
|---|---|
| C++ 标准 | C++17 最低,C++20 在有益处时使用 |
| 构建系统 | CMake 3.20+,基于 preset |
| 平台 | 以 Linux 为主;macOS 和 Windows 通过跨平台头文件支持 |
| 编译器 | GCC 11+、Clang 14+、MSVC 2022+ |
| 测试 | GoogleTest + RapidCheck(基于性质的测试) |
| 基准测试 | Google Benchmark,perf 集成 |
| Sanitizer | ASan、TSan、UBSan,通过 CMake preset 启用 |
| 文档 | VitePress,双语(中/英),GitHub Pages 发布 |