Hi LLVM! I recently ran some benchmarks with LLVM 17 on AArch64.
Here are some of the results, in case anyone is interested.
This shows variations in code size and execution time for different optimization levels, LTO (flto) and PGO (profile-instr) optimizations.
- SPEC2017, C/C++ benchs only. Ref is -O2, lower is faster, to the left is smaller.
- Min exec time of 3 runs (on FX700 AArch64 machine) on train dataset. PGO trained on the same dataset.
IMO, it is interesting to see once again the performance and size tradeoffs available with the different optimization levels.
At -O2 & -O3 levels, LTO and PGO give good results in both code size (10/20%) and execution time (5/10%) dimensions.
At -Os & -Oz levels, PGO only improves performance, and slightly increases size. Probably not expected, haven’t looked at it yet.
Any comments welcome ; )