性能相关的基本概念
C++ 程序的性能测试
C++ 跟性能相关的特性
C++ 程序的性能调优包括:内存优化,算法优化,等等
你将收获
性能相关的基本概念
C++ 程序的性能测试
C++ 跟性能相关的特性
C++ 程序的性能调优包括:内存优化,算法优化,等等
适用人群
课程介绍
吴咏炜
现任Boolan首席咨询师,国内著名C++ 专家,曾任英特尔亚太研发中心资深系统架构师,近 30 年 C/C++系统级软件开发和架构经验。专注于 C/C++ 语言(包括 C++98/11/14/17/20)、软件架构、性能优化、设计模式和代码重用。对于精炼、易于维护的代码和架构有着不懈的追求,对开源平台(GNU/Linux)有深入的理解。长期担任资深技术教练,涉及 C++、软件架构、安全软件开发、开源软件等多方面。
C++, 作为一门多范式的通用编程语言,适用的领域非常广泛。要对 C++ 程序进行性能优 化,牵涉到的方方面面也非常多。本课程就是以现代 C++ 程序为中心,讨论如何对 C++程序进行优化。课程中有跟语言强相关的内容,也有跟语言关系较少、但在实践中经常伴随 C++ 程序出现的问题。
购课链接: https://boolan.com/project/enroll/146
基本概念
一、计算机体系架构和性能
1.硬件
1)存储层次体系
2)处理器的乱序执行和流水线
3)并发
2.软件
1)系统调用开销
2)语言抽象性
二、C++ 简介
1)为什么要使用 C++
2)如何学习 C++
3)内存管理和对象的生命周期
其他生命周期
测试方法
一、性能测试基础
1)性能测试中的问题
二、性能测试方法
1)性能分析器
2)gprof 和 gperftools
3)两种性能测试方法
4)perf
5)火焰图
三、性能分析和性能优化
C++ 基本构件分析
一、函数、虚函数和函数对象
二、String
三、栈上对象、堆上对象和移动语义
四、标准容器的性能
1)序列容器
2)关联容器
3)无序关联容器
五、array
C++ 高级技巧和性能分析
一、模板
1)基本语法概念
2)泛型算法
3)内联和排序
4)二进制膨胀问题
二、智能指针
1)unique_ptr
2)shared_ptr
三、视图类型
1)string_view
2)span
3)ranges
四、编译期计算
1)利用模板参数进行计算
2)编译期类型推导
3)SFINAE
4) constexpr 变量和 constexpr 函数
5)if constexpr
6)变参模板
五、返回对象和异常
1)返回对象
2)返回值优化
3)异常的好处和开销
六、“替换”类型和错误处理
1)any
2)optional
3)variant
4)标准库的错误处理
5)Outcome
七、并发
1)进程和线程
2)thread 和 future
3)mutex
4)内存模型
5)atomic
6)多线程优化
7)并发对接口的冲击
8)并行
9)异构计算
八、异步编程和协程
1)消息循环和异步编程初探
2)网络程序和异步编程
3)生成器
4)常见协程库
通用优化方法
一、工程和构建
1)编译选项
2)内联
3)PGO 和 LTO
二、反汇编
1)编译器
2)godbolt.org
三、循环优化
1)对象传递的方式
四、控制流优化
1)减少不必要的虚函数调用
五、内存优化
1)结构体
2)不要不必要地使用堆上内存
3)分配优化
六、算术表达式优化
七、输入输出优化
八、算法优化
案例:定时器
九、不写无必要的优化
十、开源软件
1)大教堂和小市集
十一、结束语
课程目录