Profile-Guided Optimization (PGO): (Ab)using it for fun and profit

Alexander Zaitsev

from - (Warsaw, Poland)

About speaker

Solution Architect. CoreHard conference regular speaker. Likes performance-oriented technologies like C++, Rust. Believes that performance is a thing we should care about even if it is often hard to sell.

Interests: performance optimization, compilers, static and dynamic analysis.

About speakers company




In this talk, I’ll show how you can speed up software with less-known compiler flags, what benefits it could bring, and what traps are waiting for you (and how to avoid them) on this journey in real life. If you want to (try) accelerate your software without changing the code - you are welcome!

Usually, we finish the optimization of our software just by enabling “Release” flag (whatever programming language you use). Some of us, if we have enough information, enable architecture-specific optimizations like SSE/AVX/Neon instruction sets. If we need more - take a profiler, find bottlenecks, and fix them. Repeat the cycle until victory.

However, do you want to get extra performance for your application "for free"? Do you want to delegate more optimization work from your busy hands to a compiler? In this case, this presentation is for you. In this talk we will cover one not-so-widely-used compiler optimization technique - Profile-Guided Optimization (PGO):

We will speak about the following things:

* What is PGO?
* How does it work?
* Which kinds of PGO exists and what nuances each one have in practice
* PGO state across different programming languages
* And of course a lot of benchmarks!

I hope after the talk you will be ready to start integrating PGO into your application!

The talk was accepted to the conference program

other talks of this topic

Why write greedy software? Principles of reconciliation loop (hello, k8s!)

George Melikov

VK Cloud, OpenZFS contributor