LLVM Clang 12 Benchmarks At Varying Optimization Levels, LTO

Written by Michael Larabel in Software on 25 June 2021 at 12:00 PM EDT. Page 1 of 3. 18 Comments.

Earlier this month were benchmarks looking at GCC 11 performance with varying optimization levels and features like link-time optimizations. Stemming from reader requests, here are now similar reference benchmarks off LLVM Clang 12.0 on the same system with going from -O0 to -Ofast and toggling -march=native and LTO usage.

With this Clang 12.0 benchmarking a number of different C/C++ benchmarks were carried out across 13 different builds consisting of:

-O0
-Og
-O1
-O2
-O2 -flto
-O2 -march=native
-O3
-O3 -flto
-O3 -march=native
-O3 -march=native -flto
-Ofast
-Ofast -march=native
-Ofast -march=native -flto

The same open-source C/C++ benchmarks were used as in the GCC 11 testing except where any LLVM/Clang problems were encountered in just a couple situations.

LLVM Clang Optimization Levels On Intel Rocket Lake

The Clang 12 compiler benchmarking was done on Fedora Workstation 34 from an Intel Core i9 11900K Rocket Lake system.

LLVM Clang Optimization Levels On Intel Rocket Lake

If wanting the "TLDR" version, above is the geometric mean of the 44 different benchmarks carried out. Overall they are inline with expectations. Unlike the GCC 11 tests where the "-flto" runs actually were coming in slightly slower overall, that wasn't the case with this Clang benchmarking.

Related Articles