1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking Benchmarking Platform
Phoromatic Test Orchestration

The Performance Between GCC Optimization Levels

Michael Larabel

Published on 13 October 2012
Written by Michael Larabel
Page 1 of 5 - 23 Comments

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.

Latest Articles & Reviews
  1. GeForce GTX 750 Series: Nouveau vs. NVIDIA Linux Driver Performance
  2. GLAMOR + RadeonSI 2D Acceleration Is Quite Good For Open-Source AMD 2D Performance
  3. AMD Radeon R9 290 OpenGL On Ubuntu 15.04: Catalyst vs. RadeonSI Gallium3D
  4. Ubuntu 15.04 Offers Faster OpenGL For AMD Radeon GPUs On Open-Source
  5. Ubuntu 15.04 Brings Some Graphics Performance Improvements For Intel Haswell
  6. Sub-$20 802.11n USB WiFi Adapter That's Linux Friendly
Latest Linux News
  1. Keeping The Humidity Out Of The Basement Linux Server Room
  2. It's A Long Road Ahead To Get Ubuntu Snappy On The Desktop
  3. NetworkManager 1.0.2 Arrives As First Post-1.0 Release
  4. Libinput 0.15 Adds New Debug Events Utility
  5. Qt 5.5 Beta Is Coming Soon, Snapshot Released
  6. Steam Linux Usage Drops Below 1%
  7. Many OpenGL ES 3.1 Commits Land In Mesa
  8. HHVM 3.7 Brings More Performance Improvements
  9. Experimental DragonFlyBSD Code Adds Broadwell Graphics
  10. Virt-Manager 1.2.0 Brings OVMF/AAVMF Support For UEFI In VMs
Most Viewed News This Week
  1. Trying Out Microsoft Visual Studio Code On Linux
  2. Microsoft Releases New Code IDE For Linux!
  3. Improvements On The Way For GNOME's Nautilus File Manager
  4. A Lot Of Improvements Are Coming For Mir 0.13, Including Work Towards Libinput
  5. Kodi 15.0 Beta 1 Released
  6. Mono 4.0 Makes Use Of Microsoft's Open-Source Code, C# 6.0
  7. Wayland 1.8 Alpha Release Delayed
  8. Lucid Sleep Support Is Being Worked On For The Upstream Linux Kernel