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!