参与贡献到 C++ 高性能指南
感谢你对本项目的关注!本文档介绍如何为本项目贡献内容。
开始之前
- Fork 本仓库
- 克隆你的 Fork:
git clone https://github.com/<your-username>/cpp-high-performance-guide.git - 创建功能分支:
git checkout -b feature/your-feature-name
构建与测试
# Debug 构建并启用测试
cmake --preset=debug
cmake --build build/debug
ctest --preset=debug
# Release 构建并运行基准测试
cmake --preset=release
cmake --build build/release
ctest --preset=release
代码风格
- 遵循项目根目录中的
.clang-format配置 - 提交前格式化代码:
find examples tests benchmarks -name "*.cpp" -o -name "*.hpp" | xargs clang-format -i - 头文件统一使用
#pragma once - 代码放在
hpc::命名空间层级下
添加新的示例模块
- 在
examples/下创建新目录,遵循命名规则:XX-topic-name/ - 使用统一结构:
examples/XX-topic-name/ ├── src/ # 带 demo main() 的源码文件 ├── bench/ # Google Benchmark 文件 ├── include/ # 可复用头文件(可选) ├── CMakeLists.txt # 使用 ExampleTemplate.cmake 中的 hpc_add_example() └── README.md # 模块文档 - 在
examples/CMakeLists.txt中注册子目录 - 在
tests/下补充对应测试
测试要求
提交 Pull Request 之前,请确保:
所有测试通过:
cmake --preset=debug && cmake --build build/debug && ctest --preset=debug没有 AddressSanitizer 错误:
cmake --preset=asan && cmake --build build/asan && ctest --preset=asan没有 ThreadSanitizer 错误(并发代码尤其重要):
cmake --preset=tsan && cmake --build build/tsan && ctest --preset=tsan没有 UndefinedBehaviorSanitizer 错误:
cmake --preset=ubsan && cmake --build build/ubsan && ctest --preset=ubsan
Commit Message 建议
请使用清晰、可描述的提交信息:
feat: add matrix multiplication SIMD examplefix: resolve false sharing in concurrent counterdocs: update learning path with new modulebench: add parameterized benchmark for prefetch distancetest: add property tests for lock-free queue
Pull Request 流程
- 确保你的分支与
main保持同步 - 确保所有 CI 检查通过
- 在 PR 描述中清楚说明本次修改的内容和原因
- 如有相关 issue,请在 PR 中引用
License
通过提交贡献,你同意你的贡献将以 MIT License 进行许可。