CppCon 2023 Your Performance Todo List 2: Maintaining Performance Scalability... -- Jan Bielak

Registration is now open for CppCon 2023! The conference starts on October 1 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2023!

Your Performance Todo List 2: Maintaining Performance Scalability and Avoiding Bottlenecks

Tuesday, October 3 • 09:00 - 10:00

by Jan Bielak

Summary of the talk:

Writing efficient programs is hard. This is because it requires a lot of knowledge, experience and strategic thinking. There have been many talks on optimization and often each addresses a single concept. Being able to achieve a bird’s eye view of factors affecting performance often requires many hours of researching the topic. To lessen the mental burden of optimizing programs, I have picked out the techniques, I believe are most important. During the talk, I will present them in an organized manner and provide practical examples of how they can be applied.

I will first discuss what I believe are the main goals efficient programs strive to achieve. Then, I will present the general methods of achieving those goals. Then, for the majority of the talk, we will discuss a few dozen performance opportunities. For each of them, I will explain the underlying mechanism of how the optimization works. I will avoid bluntly giving guidelines to follow without explanation. Each of the techniques naturally comes with its costs, and those will be discussed as well.

I will additionally discuss various performance pitfalls. These are sometimes called “premature pessimizations” in contrast to the often used term of “premature optimizations”. I will show examples of optimizations which do not incur any cost on program readability or maintainability and as such should be considered performance best practices. Avoiding their use doesn’t improve code in any manner, while making it slower.

This talk is intended for a diverse audience, as, after all, probably most of the C++ community is interested in performance. It is appropriate for hobbyists and professionals alike, with varying experience with the language, due to the gradual increase in difficulty of examples. It will be a time productively spent.


This presentation builds upon "Your Performance Todo List", from last year's conference (30k+ views, 8th most viewed). It will serve as an extension to its material, by revisiting certain topics and explaining them in more detail as well as by providing more examples of techniques and their applications. Specifically, it will first provide a more in-depth and illustrative view of various microarchitectural details and their impact on performance, as well as of relevant optimizations:
* branch prediction and speculative execution,
* pipelining and out of order execution,
* vectorization and SIMD processing,
* cache and memory functioning and intercommunication.

Then, the talk will focus on the topics emerging as being the most crucial to maintaining performance scalability - parallelism and concurrency. I will ground multithreading concepts, like atomics, memory barriers, and other synchronization primitives, in the context of both the theoretical C++ memory model as well as specific cache coherency protocols.

I will also discuss the interactions between a user-space application and the underlying operating system as well as their effects on performance.

Add a Comment

Comments are closed.

Comments (0)

There are currently no comments on this entry.