The Performance Between GCC Optimization Levels

Published on October 13, 2012
Written by Michael Larabel
Page 1 of 5
Discuss This Article

For those that have never benchmarked the performance differences between GCC's different optimization levels, here are some recent test results comparing the performance differences when using an AMD FX-8150 processor with GCC 4.7.2.

These are just some straightforward benchmarks to share showing the performance differences of GCC 4.7.2 from the AMD FX-8150 Bulldozer system when changing out the optimization flags and then having the Phoronix Test Suite re-build the tests each time followed by letting it do its automated benchmarks.

For those unfamiliar with the different optimization flags, see the GCC optimize options documentation. The tested flags used in this article include:

-O0 - Reduce compilation time and make debugging produce the expected results. This is the default.

-O1 - Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function.

-O2 - Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. As compared to -O, this option increases both compilation time and the performance of the generated code.

-O3 - Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload, -ftree-vectorize, -fvect-cost-model, -ftree-partial-pre and -fipa-cp-clone options.

-Os - Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.

-Ofast - Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math and the Fortran-specific -fno-protect-parens and -fstack-arrays.

Only the generated binary performance is being compared in this article and not focusing upon the compilation time (though there is one result shared in this article of the PHP compilation time) or generated binary size.

<< Previous Page
1
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  2. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  3. F2FS File-System Shows Regressions On Linux 3.10
  4. Previewing The Radeon Gallium3D Shader Optimizations
Latest Linux News
  1. FreeBSD Still Working On Next-Gen Package Manager
  2. DNF Still Advancing As Experimental Yum For Fedora
  3. Logitech Begins Supporting Linux Users
  4. Modern Intel Gallium3D Driver Still Being Toyed With
  5. Linux 3.10 Kernel Benchmarks On A Core i7 Laptop
  6. GCC 4.8.1 Compiler Due To Be Out Next Week
  7. Linux 3.10 Kernel Benchmarks For Intel Ivy Bridge
  8. Linux's "Ondemand" Governor Is No Longer Fit
  9. Firefox 22 Beta Enables WebRTC Support
  10. OpenSUSE 13.1 Milestone 1 Released
  11. DRM Graphics Driver Comes For Dove/Cubox
Latest Forum Talk
  1. Logitech Begins Supporting Linux Users
  2. KDE's Krita Ported To OpenGL 3.1, OpenGL ES 2.0
  3. Kubuntu, KDE Has Little Hope For Ubuntu's Mir
  4. Features Being Developed For KDE 4.11 Desktop
  5. Unity 8, Mir To Be Experimental Choice In Ubuntu...
  6. Sumo Lounge Emperor
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite