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

GCC 4.7 Link-Time Optimization Performance

Michael Larabel

Published on 21 August 2012
Written by Michael Larabel
Page 1 of 3 - 17 Comments

With the recent interest regarding Link-Time Optimization support within the Linux kernel by GCC, here are some benchmarks of the latest stable release of GCC (v4.7.1) when benchmarking several common open-source projects with and without the performance-enhancing LTO compiler support.

This article, which spawned out of the many LTO comments from the Linux kernel link-time optimization article, has a few benchmarks conducted since then from an Intel Ivy Bridge system. More GCC LTO benchmarks will come in a future article. GCC's Link-Time Optimization support allows for creating faster generated binaries at the cost of increased compile times and greater system memory (RAM) usage. When building software with the performance-oriented feature, link-time optimizations are applied on recent versions of the GNU Compiler Collection that allow for in-lining of functions between different files, performing various compile-time optimizations across the binary as a whole, dropping dead code, and running entire checks across the whole binary rather than just individual files.

As explained on the GCC Wiki, "Link Time Optimization (LTO) gives GCC the capability of dumping its internal representation (GIMPLE) to disk, so that all the different compilation units that make up a single executable can be optimized as a single module. This expands the scope of inter-procedural optimizations to encompass the whole program (or, rather, everything that is visible at link time)...The fundamental mechanism used by the compiler to delay optimization until link time is to write the GIMPLE representation of the program on special sections in the output file. For the initial implementation on the branch, ELF was chosen as the container format for these sections, but in GCC-4.6 support has been added on the trunk for PE-COFF and Mach-O. In order to use LTO the target must support one of these binary formats."

Using GCC LTO requires passing "-flto" compiler flag to enable the main Link-Time Optimization features. There's also a "-fwhopr" that is similar to "-flto" but splits compilation to achieve scalability for very large code-bases that cannot fit all in memory at once.

For this quick GCC 4.7.1 LTO benchmarking, the Intel Core i7 3517UE "Ivy Bridge" system was running Ubuntu 12.10 x86_64 with GCC 4.7.1 from the Ubuntu Quantal repository and then running several common computational test profiles with and without the "-flto" compiler flag. All other CFLAGS/CXXFLAGS options were maintained the same throughout the testing process. This benchmarking was handled in a fully automated manner using the open-source multi-platform Phoronix Test Suite software.

Latest Articles & Reviews
  1. Sub-$20 802.11n USB WiFi Adapter That's Linux Friendly
  2. The Lenovo T450s Is Working Beautifully With Linux
  3. Linux 4.0 SSD EXT4 / Btrfs / XFS / F2FS Benchmarks
  4. Linux 4.0 Hard Drive Comparison With Six File-Systems
  5. Lenovo ThinkPad T450s Broadwell Preview
  6. How Open-Source Allowed Valve To Implement VULKAN Much Faster On The Source 2 Engine
Latest Linux News
  1. Debian 8.0 Jessie's Installer RC3 Released
  2. Features Thus Far For The Linux 4.1 Kernel
  3. Intel's Turbostat Adds Skylake Support In Linux 4.1
  4. Microsoft's Open-Source Group Merges Back Into The Company
  5. EXT4 In Linux 4.1 Adds File-System Level Encryption
  6. Open-Source Ardour 4.0 Audio Software Has Big Improvements
  7. Linux-Powered Endless Computer Raises $100k+ In A Few Days
  8. GCC 5.1 RC2 Arrives, GCC 5.1 Planned For Next Week
  9. F2FS For Linux 4.1 Has New Features & Fixes
  10. Phoronix Server Upgrade This Weekend: Dual Haswell Xeons, 96GB DDR4
Most Viewed News This Week
  1. Nouveau: NVIDIA's New Hardware Is "VERY Open-Source Unfriendly"
  2. Linux 4.0 Kernel Released
  3. Linux 4.1 Brings Many Potentially Risky x86/ASM Changes
  4. Microsoft Announces An LLVM-Based Compiler For .NET
  5. VirtualBox 5.0 Beta 2 Released
  6. KDBUS Is Taking A Lot Of Heat, Might Be Delayed From Mainline Linux Kernel
  7. LibreOffice 4.5 Bumped To Become LibreOffice 5.0
  8. Mozilla Start Drafting Plans To Deprecate Insecure HTTP