课程简介
Introduction
C++,作为一门多范式的通用编程语言,适用的领域非常广泛。要对 C++ 程序进行性能优化,牵涉到的方方面面也非常多。本课程就是以现代 C++ 程序为中心,讨论如何对 C++ 程序进行优化。课程中有跟语言强相关的内容,也有跟语言关系较少、但在实践中经常伴随 C++ 程序出现的问题。
· 周末班:共 10 天,每天 2 课时,每周六、日
· 具体日期:12月10、11、17、18、24、25日,2023年1月2、7、8、14日 晚上16:00-17:50
课程简介
Introduction
C++,作为一门多范式的通用编程语言,适用的领域非常广泛。要对 C++ 程序进行性能优化,牵涉到的方方面面也非常多。本课程就是以现代 C++ 程序为中心,讨论如何对 C++ 程序进行优化。课程中有跟语言强相关的内容,也有跟语言关系较少、但在实践中经常伴随 C++ 程序出现的问题。
· 周末班:共 10 天,每天 2 课时,每周六、日
· 具体日期:12月10、11、17、18、24、25日,2023年1月2、7、8、14日 晚上16:00-17:50
培训讲师
Instructor
吴咏炜
Boolan首席咨询师
国内知名 C++专家,曾任英特尔亚太研发中心资深系统架构师,近 30 年 C/C++系统级软件开发和架构经验。专注于 C/C++ 语言(包括 C++98/C++11/14/17/20)、软件架构、性能优化、设计模式和代码重用。对于精炼、易于维护的代码和架构有着不懈的追求,对开源平台(GNU/Linux)有深入的理解。长期担任资深技术教练,涉及 C++、软件架构、安全软件开发、开源软件等多方面。
培训收获
Benefits
性能相关基本概念
C++程序性能测试
C++性能相关特性
C++程序性能调优
培训大纲
Syllabus
基本概念——计算机体系架构和性能
硬件:存储层次体系、处理器的乱序执行和流水线、并发
软件:系统调用开销、编译器优化、语言抽象性
基本概念——C++ 简介
为什么要使用 C++
如何学习 C++
内存管理和对象的生命周期:栈、堆、RAII、其他生命周期
测试方法——性能测试基础
性能测试中的问题
时间测量
编译器的干扰
处理器的干扰
防优化技巧
测试方法——性能测试方法
性能分析器
gprof 和 gperftools
两种性能测试方法
perf
火焰图
测试方法-性能分析和性能优化
C++ 基本构件分析
函数、虚函数和函数对象
string
栈上对象、堆上对象和移动语义
标准容器的性能:序列容器-vector、deque、list、forward_list
标准容器的性能:关联容器-map、multimap、set、multiset
标准容器的性能:无序关联容器-unordered_map、unordered_multimap、unordered_set、unordered_multiset
array
C++ 高级技巧和性能分析
模板:基本语法概念、泛型算法、内联和排序、二进制膨胀问题
智能指针:unique_ptr、shared_ptr
视图类型:string_view、span、ranges
异常和返回值优化:异常和可读性、异常的性能开销、返回值优化
“替换”类型和错误处理:any、optional、variant、标准库的错误处理、outcome
编译期计算:利用模板参数进行计算、编译期类型推导、SFINAE、constexpr变量和 constexpr函数、if constexpr、变参模板
并发:进程和线程、thread 和 future、mutex、内存模型、atomic、多线程优化、并发对接口的冲击、异构计算
通用优化方法
工程和构建:编译选项、内联、PGO 和 LTO
反汇编
内存优化:结构体对齐问题、堆内存的使用、内存池、缓存问题
循环优化
算术表达式优化
输入输出优化
算法优化
不写无必要的优化
开源软件
结束语
适用人群
Audiences
开发工程师、高级工程师、软件主管、研发经理、架构师
培训地点
Venue
相关推荐
Recommendation
预约内训
Training