I applied PGO to many kinds of software, collected a lot of carefully hidden traps on my journey, and found multiple ways how to avoid them. In this talk, I want to share with you my experience.
Profile-Guided Optimization (PGO) is a compiler optimization technique that helps with optimizing software based on a collected in runtime profile. This optimization is available for a long time in the Rustc compiler. But how smooth will be your experience when you try to adopt PGO in practice?
I applied PGO to many kinds of software (compilers, databases, log solutions, CLI tools, and many more), collected a lot of carefully hidden traps on my journey, and found multiple ways how to avoid them. In this talk, I want to share with you my experience.
We will discuss the following topics:
* What is PGO and why do we need it?
* PGO performance benefits in practice (with a lot of numbers for actual open-source software)
* What kinds of PGO do we have nowadays?
* Pros and cons of each PGO way.
* Most and less common PGO traps that you can meet in your journey and how to mitigate them.
* PGO state in the Rust ecosystem: compilers, build systems, community tooling.
* A lot of pieces of advice about PGO integration into your software.
* And of course answer all your questions about PGO!
After the talk, you will be much more prepared for doing PGO in practice and even will be aware of more advanced optimization techniques like Post-Link Optimization (PLO), ML-based compiler optimization and other interesting stuff from the optimization field.
This talk explores lessons learned while building a CRDT library with JSON semantics, aimed at application developers.
In this lightning talk, we take a look at ArcShift, a lock-free data structure for shared data that still needs to be mutated.
In this lightning talk, we will explore the reasons why Icedragon was created, what makes it unique, and how you can use it to provide portable builds for your projects.
After spending many happy years in Scala, not mutating anything but copying objects faster than rabbits breed I ventured into the world where each allocation is carefully examined and it is perfectly normal to reuse the same list for different purposes.
This talk dives into common anti-patterns, offering practical tips to sidestep frustration. Whether you're new to Rust or leveling up, you’ll leave with insights to write clean, idiomatic, and maintainable code—without the tears.
Discover how Cargo extensions can revolutionize your Rust development workflow in this insightful talk.