Algorithms for Modern Hardware
网站:https://en.algorithmica.org/hpc/
该博客是面向现代硬件的高性能计算权威教程,对 C++ 性能优化具有直接、可落地、倍数级提升的价值,是性能工程师的核心参考资料。
一、核心定位:解决 C++ 性能的真实痛点
- 跳出传统
时间复杂度 O(·)优化,聚焦 CPU/缓存/SIMD/编译期 硬件级优化 - 针对 C++ 标准库(STL)性能瓶颈,提供可直接替换的高性能实现
- 全部使用 C++ 代码示例落地,覆盖基础语法到工程级案例
二、对 C++ 的直接性能提升(可落地成果)
所有优化均提供可直接运行的 C++ 代码,相比 STL 实现倍数级加速:
- 基础算法:GCD 快 2 倍、求和快 2 倍、前缀和快 2–3 倍
- 查找与搜索:二分查找快 8–15 倍、数组查找快 10 倍、搜索树快 15 倍
- 数据结构:哈希表 unordered_map 快 5 倍、线段树快 5–10 倍
- IO 与解析:整数解析比 scanf 快 35 倍
- 数值计算:矩阵乘法比三重循环快 100 倍、最优 FFT/Karatsuba 算法
- 位运算:popcount 快 2 倍
三、C++ 性能优化的方法论价值
- 硬件感知编程:缓存、内存层级、预取、对齐、AoS/SoA 布局、指令级并行、无分支编程、流水线优化
- 编译期优化:GCC 编译选项、指令调度、零/非零成本抽象、编译期计算
- SIMD 向量化:Intrinsics、自动向量化、寄存器内数据重排,突破单线程性能上限
- 性能工程流程:profiling、基准测试、精准测速、瓶颈定位与验证,避免无效优化
四、适合的 C++ 开发场景
- 追求极致单线程性能的后端、算法、游戏、嵌入式开发
- 需要替换 STL 低效组件、重构热点代码路径、开发高性能库
- 从“会写 C++”进阶到“写出硬件友好的极致高速 C++”
总结
该博客是C++ 性能优化实战手册:不空谈理论,只提供可落地代码、可量化加速、可复用设计模式,能将 C++ 程序性能从“可用”提升至硬件极限速度。
C++资源,书籍,演讲,论坛,博客,知名库,工具等
书籍
初学者入门,必修几本书,学习C++,除了看视频,和高手交流外,书籍是增强内功的很重要的修为,建议下载到iPad上后,每天早上花费30分钟看一下,坚持1年,一定有很好的收获.可以自行到以下地址获取.书籍格式为PDF,方便阅读.
百度网盘 链接: 提取码: 8ems
- 代码大全2
- C++ API设计
- C++并发编程实战
- Effective Modern C++
- Modern C++ Design
- C++ Concurrency in Action
- Modern C++学习笔记
- A Tour of C++ (Bjarne Stroustrup) [C++11/17/20]
- The C++ Programming Language (Bjarne Stroustrup) [C++11]
- Effective Modern C++ (Scott Meyers) [C++11/14]
- Overview of the New C++ (Scott Meyers) [C++11/14]
- C++ Core Guidelines (Bjarne Stroustrup, Herb Sutter) Guidelines for using modern C++.
- C++ Core Guidelines中文版 (Bjarne Stroustrup, Herb Sutter) Guidelines for using modern C++.
- C++ Concurrency in Action (Anthony Williams) [C++11/14/17] - Reference and guide to writing multi-threaded code with standard C++.
- C++17 - The Complete Guide (Nicolai M. Josuttis) [C++17] - Giving guidance on how to use Language and Library Features of C++17.
- Professional CMake (Craig Scott) - A practical guide for using CMake to build your C++ projects.
- Modern C++ Tutorial: C++ 11/14/17/20 On the Fly (Changkun Ou) - The book claims to be "On the Fly". Its intent is to provide a comprehensive introduction to the relevant features regarding modern C++ (before 2020s).
工具
Deref coercion
Deref coercion 在 Rust 里,解引用强制转换(Deref coercion)是一项很有用的特性,它能自动把引用类型转换为其他引用类型。这一特性让代码更具灵活性和可读性。以下是对 Rust 解引用强制转换的详细介绍: 工作原理: 当函数或方法期望的是某种引用类型,而传入的却是另一种引用类型时,解引用强制转换就会发挥作用。Rust 会自动调用`Deref`或`DerefMut`特性的`deref`方法,从而将传入的引用类型转换为所需的类型。
CRTP(Curiously Recurring Template Pattern)
**CRTP(Curiously Recurring Template Pattern)** 是一种通过模板继承实现的**静态多态**技术,其核心思想是**基类将派生类作为模板参数**,从而在编译时实现多态行为.
C++ AI 提示词 (Prompt)
C++ 提示设计核心原则
- 明确目标:指定代码功能(如算法、数据结构、类设计)。
- 约束条件:限定 C++ 标准(C++11/17/20)、代码风格(Google/LLVM)、依赖库(STL/Boost)。
- 示例驱动:提供输入/输出样例或代码片段,明确期望。
- 错误处理:要求异常捕获、边界检查或防御性编程。
- 使用 `std::mutex` 和 `std::condition_variable`
- 提供 `push()`, `try_pop()`, `wait_and_pop()` 方法
- 支持移动语义(禁用拷贝)
- 附测试代码:一个生产者线程和两个消费者线程
- 输入字符串字面量,如 `hash_str("hello")`
- 输出 `constexpr uint32_t` 类型的 FNV-1a 哈希值
- 禁止使用运行时计算
std::enable_shared_from_this
std::enable_shared_from_this 是 C++ 标准库提供的一个模板类,用于解决 对象在成员函数中需要安全获取指向自身的 std::shared_ptr 的问题。它的核心作用是确保多个 std::shared_ptr 实例共享同一对象的引用计数,避免因错误创建多个独立的 std::shared_ptr 而导致的内存管理问题。