你将收获

性能相关的基本概念

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)内存管理和对象的生命周期

  • RAII

其他生命周期

测试方法

一、性能测试基础

1)性能测试中的问题

  • 时间测量
  • 编译器的干扰
  • 处理器的干扰
  • 防优化技巧

二、性能测试方法

1)性能分析器

2)gprof 和 gperftools

3)两种性能测试方法

4)perf

5)火焰图

三、性能分析和性能优化

C++ 基本构件分析

一、函数、虚函数和函数对象

二、String

三、栈上对象、堆上对象和移动语义

四、标准容器的性能

1)序列容器

  • vector
  • deque
  • list
  • forward_list

2)关联容器

  • map
  • multimap
  • set
  • multiset

3)无序关联容器

  • unordered_map
  • unordered_multimap
  • unordered_set
  • unordered_multiset

五、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)多线程优化

  • mutex 和 atomic
  • thread_local

7)并发对接口的冲击

8)并行

9)异构计算

八、异步编程和协程

1)消息循环和异步编程初探

2)网络程序和异步编程

3)生成器

4)常见协程库

通用优化方法

一、工程和构建

1)编译选项

2)内联

3)PGO 和 LTO

二、反汇编

1)编译器

2)godbolt.org

三、循环优化

1)对象传递的方式

四、控制流优化

1)减少不必要的虚函数调用

五、内存优化

1)结构体

  • 对齐问题

2)不要不必要地使用堆上内存

3)分配优化

  • 内存池①对象内存池②STL 容器内存池
  • 缓存问题

六、算术表达式优化

七、输入输出优化

八、算法优化

案例:定时器

九、不写无必要的优化

十、开源软件

1)大教堂和小市集

十一、结束语

 

 

 

 

 

 

 

 

 

 

 

 

 

 

课程目录