Profile-Guided Optimization (PGO) benchmark results #193
Replies: 1 comment 1 reply
-
Hi, thank you for taking time to do the benchmarks and reporting them. That's some impressive perf gains, I'm impressed.
This is good and would love to see the results of this on the speed
|
Beta Was this translation helpful? Give feedback.
-
Hi!
Recently I tested Profile-Guided Optimization (PGO) compiler optimization on different projects in different software domains - all the results are available at https://github.com/zamazan4ik/awesome-pgo . Since PGO shows measurable improvements in many cases, I decided to perform PGO benchmarks on
zune-image
. Here are my results.Test environment
zune-image
version: the latest for now from thedev
branch on commit26df051313bb88ab89073fa1d8a6a0546a3b6a26
Benchmark
For benchmark purposes, I use built-in into the project benchmarks. For PGO optimization I use cargo-pgo tool. Release bench result I got with
taskset -c 0 cargo bench
command. The PGO training phase is done withtaskset -c 0 cargo pgo bench
, PGO optimization phase - withtaskset -c 0 cargo pgo optimize bench
.taskset -c 0
is used for reducing the OS scheduler influence on the results.All measurements are done on the same machine, with the same background "noise" (as much as I can guarantee).
Results
I got the following results:
According to the results, PGO measurably improves the library's performance in many cases.
Further steps
I can suggest the following action points:
Testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too (Clang and Rustc already use BOLT as an addition to PGO) but I recommend starting from the usual PGO.
I would be happy to answer your questions about PGO.
Beta Was this translation helpful? Give feedback.
All reactions