4006-998-758
3000+课程任你选择
技术语言前沿专题学习v
研发学院 技术语言前沿专题学习
吴咏炜

1995年毕业于复旦大学,近 30 年 C/C++系统级软件开发和架构经验。专注于 C/C++ 语言(包括 C++98/C++11/14/17/20)、软件架构、性能优化、设计模式和代码重用。对于精炼、易于维护的代码和架构有着不懈的追求,对开源平台(GNU/Linux)有深入的理解。长期担任资深技术教练,涉及 C++、软件架构、安全软件开发、开源软件等多方面。目前担任华为资深技术教练。

历届C++大会发布了精彩的演讲,曾参与翻译《编程大师访谈录》 ,并且在国内外的技术专栏有大量文章发布如下:

Time zones in Python (2019-09-01)

阅读的权利 (a Chinese translation of The Right to Read) (2019-04-01)

My opinions regarding the top five TIOBE languages (2018-12-07)

25x performance boost in two hours (2018-11-22)

Pipenv and relocatable virtual environments (2018-11-04)

A VPN issue with MTU (2018-11-02)

On the use of she as a generic pronoun (2017-10-21)

A journey of purely static linking (2017-10-02)

Another Microsoft Unicode I/O problem (2017-09-29)

C/C++ performance, mmap, and string_view (2017-09-14)

Annoying Vim behaviour on Ubuntu 16.04 (2017-02-18)

Performance of my line readers (2016-11-12)

Upgrading to Boost 1.61 in MacPorts (2016-08-18)

Python yield and C++ coroutines (2016-08-16)

A small experiment of system scripting in Python (2016-07-24)

Choosing a multi-precision library for C++—a critique (2016-06-04)

MSVCRT.DLL console I/O bug (2016-05-27)

Generic lambdas and the compose function (2015-01-03)

Type deduction and my reference mistakes (2014-12-29)

Installing Clang 3.5 for Windows (2014-12-24)

A complaint of ODF’s Asian language support (2014-12-18)

Y combinator and C++ (2014-12-14)

Study notes: functional programming with C++ (2014-12-7)

Specify LANG in a UTF-8 web page! (2006-3-28)

Vim 实用技术:技巧,插件,定制 (Practical Vim); PDF version available (2006-3-22)

Design and implementation of a static memory pool (2005-1-11)

A cross-platform memory leak detector (2004-11-28)

Stdcall and DLL tools of MSVC and MinGW (2002-8-20)

Issues about time routines on Win32 and *NIX (2002-2-26)

A fast string implementation for STL map (2002-2-24)

MSVC and MinGW DLL interlinking FAQ (2001-12-21)

Multibyte functions in Microsoft C run-time (2001-12-16)

ASP 应用程序开发规范 (Active Server Pages programming guide) (2001-8-12)


查看老师详情
课程内容

课程介绍

C++,作为一门多范式的通用编程语言,适用的领域非常广泛。要对 C++ 程序进行性能优化,牵涉到的方方面面也非常多。本课程以现代 C++ 程序为中心,讨论如何对 C++ 程序进行优化。课程中有跟语言强相关的内容,也有跟语言关系较少、但在实践中经常伴随 C++ 程序出现的问题。

课程收益

通过本次课程,你将学习到:

  性能相关的基本概念

  C++程序的性能测试

  C++跟性能相关的特性

   C++程序的性能调优,包括:内存优化,算法优化,等等

 课程大纲


概念篇

  •   计算机体系架构和性能

   Ø  硬件

  •   存储层次体系

  •   处理器的乱序执行和流水线

  •   并发

  Ø  软件

  •   系统调用开销

  •   编译器优化

  •   语言抽象性

  •   C++ 简介

  Ø  为什么要使用 C++

  Ø  如何学习 C++

  Ø  内存管理和对象的生存期

 

测试篇

  •   性能测试基础

Ø  性能测试中的问题

Ø  时间测量

Ø  编译器的干扰

Ø  处理器的干扰

Ø  防优化技巧

  •   性能测试方法

Ø  性能分析器

Ø  gprof 和 gperftools

Ø  两种性能测试方法

  •   性能分析和性能优化

 

C++ 基本构件分析

  •   函数、虚函数和函数对象

  •   string

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

  •   标准容器的性能

   Ø  序列容器

   Ø  关联容器

   Ø  无序关联容器

 

C++ 高级技巧和性能分析

  •   模板

   Ø  基本语法概念

   Ø  泛型算法

   Ø  内联和排序

   Ø  二进制膨胀问题

  •   智能指针

   Ø  unique_ptr

   Ø  shared_ptr

  •   视图类型

   Ø  string_view(第三方库或 C++17)

   Ø  span(第三方库或 C++20)

   Ø  ranges(C++20)

  •   编译期计算

   Ø  利用模板参数进行计算

   Ø  编译期类型推导

   Ø  SFINAE

   Ø  constexpr 变量和 constexpr 函数

   Ø  if constexpr(C++17)

   Ø  变参模板

  •   折叠表达式(C++17)

  •   返回对象和异常

   Ø  返回值优化

  •   “替换”类型和错误处理

   Ø  optional(第三方库或 C++17)

   Ø  variant(第三方库或 C++17)

   Ø  标准库错误码

   Ø  expected(第三方库或 C++23)

  •   并发

   Ø  进程和线程

   Ø  thread 和 future

   Ø  mutex

   Ø  内存模型

   Ø  atomic

   Ø  多线程优化

  •   mutex 和 atomic

  •   thread_local

   Ø  并行算法(C++17)

  •   异步编程和协程(C++20)

   Ø  消息循环和异步编程初探

   Ø  网络程序和异步编程

   Ø  生成器

   Ø  常见协程库

 

通用优化方法

  •   工程和构建

   Ø  编译选项

   Ø  内联

   Ø  PGO 和 LTO

  •   反汇编

   Ø  编译器

   Ø  godbolt.org

  •   循环优化

  •   内存优化

   Ø  不要不必要地使用堆上内存

   Ø  分配优化

  •   内存池

   Ø  缓存问题

  •   算法优化

  •   算术表达式优化

  •   输入输出优化

  •   不写无必要的优化

  •   其他性能调优手段

 

 

 

 





返回上一级