本课程讲述大规模系统软件架构的性能优化技巧与实践。大规模软件系统性能优化一直是技术和艺术的复杂综合，特别考虑到现代机器硬件结构的复杂性。本课程由Andrei Alexandrescu长期在Facebook等公司大规模系统软件研发经验集结而成，包含从机器学习、高性能库、到大规模计算后端等 各种软件系统的性能调优。
This class introduces attendees to a thorough approach to optimization techniques for contemporary computing architectures. It is based on Andrei's career-long experience with tuning the performance of various software systems, from Machine Learning research to high-performance libraries to Facebook-scale computing backends.
Such information is scant and difficult to find. Software engineering folklore is rife with tales of optimizations. Programmers commonly discuss and argue whether a piece of code is supposed to be faster than another, or what to do to improve the performance of a system small or large.
Optimization is big. Arguably it's bigger today, when serial execution speed has stalled and, after parallelizing what's possible, we have single-thread speed as the remaining bottleneck. A large category of applications have no boundaries on desired speed, meaning there's no point of diminishing returns in making code faster. Better speed means less power consumed for the same work, more workload with the same data center expense, better features for the end user, more features for machine learning, better analytics, and more.
Optimizing has always been an art, and in particular optimizing C++ on contemporary hardware has become a task of formidable complexity. This is because modern hardware has a few peculiarities about it that are not sufficiently understood and explored. This class offers a thorough dive in this fascinating world.
Andrei Alexandrescu 前Facebook研究科学家
Andrei Alexandrescu是广受尊敬的C++技术权威，D语言发明人。华盛顿大学计算机博士，毕业后进入Facebook担任研究科学家，其研究领域包括系统软件设计，编程语言，机器学习，及自然语言处理。在Facebook期间，Andrei主导开发了著名的Folly开源库。代表作品: Modern C++ Design，和Jolt大奖图书C++ Coding Standards。
- The Art of Benchmarking
- Conducting Time Measurements
- Strength Reduction
- Minimizing Indirections
- Eager Computation: Tables vs. Computation
- Computation vs. Tables
- Lazy Structuring
- Instruction-Level Parallelism
- Smart Resource Optimizations
- Copy Elision
- Scalable Use of the STL
- Building Structure on Top of Arrays
- Large Set Operations and Derivatives
- Contention Minimization