Performance Analysis and Tuning on Modern CPUs: Squeeze the last bit of performance from your application.
by Denis Bakhvalov (Author), Mark E. Dawson (Contributor), Sridhar Lakshmanamurthy (Contributor), Nadav Rotem (Contributor)
ASIN : B08R6MTM7K
Publisher Finelybook 出版社：Independently published (November 16, 2020)
pages 页数：237 pages
We live in an increasingly data-centric world, where we generate enormous amounts of data each day. The growth of information exchange fuels the need for both faster software and faster hardware. Unfortunately, modern CPUs are not enjoying big improvements in single-core performance as they used to in the past decades.
That's why performance tuning is becoming more important than it has been for the last 40 years. According to the popular paper "There’s plenty of room at the top" by Leiserson et al., SW tuning will be one of the key drivers for performance gains in the near future. We, as SW developers, must start optimizing the code of our applications.
I started this book with a simple goal: educate software developers to better understand their applications' performance on modern hardware. I know how confusing this topic might be for a beginner or even for an experienced developer. I remember the days when I was starting with performance analysis. I was gazing at unfamiliar metrics trying to match the data that didn't match. And I was baffled. It took me years until it finally "clicked", and all pieces of the puzzle came together. At the time, the only good sources of information were software developer manuals, which are not what mainstream developers like to read. So I decided to write this book, which will hopefully make it easier for developers to learn performance analysis and tuning concepts.
This book is a guide for optimizing the performance of applications that run on modern CPUs. It combines the knowledge of many experts from different industries, including engineers from google, Facebook, leading HFT, and game development firms.
The book is divided into 2 parts. The first part gives an introduction to performance analysis, including a brief overview of CPU microarchitecture, terminology, and metrics. It also explores different methods to analyze performance and HW monitoring features available on modern platforms. The second part shows how to discover optimization opportunities and what transformations can be done to improve the performance of a program. It provides a checklist of optimizations that can be applied to a user's application, such as loop optimizations, vectorization, function inlining, etc. It also discusses code transformations that help to eliminate issues on a CPU microarchitecture level, like cache misses, branch mispredictions, and others.
This book is indispensable for software developers that work with performance-critical applications and do low-level optimizations. It also will be useful for any developer who wants to understand the performance of their application better and know how it can be diagnosed and improved.
Readers are expected to have a minimal background in C/C++ programming languages to understand the book's examples. The author also expects familiarity with basic concepts of computer architecture and operating systems. The ability to read x86 assembly is desired but is not a strict requirement.