Link-Time Optimizations With GCC 4.8

Posted by Michael Larabel on February 09, 2013

GCC 4.8 will feature a few improvements when it comes to LTO, a.k.a. Link-Time Optimization, but will this reflect in any greater performance for the resulting binaries?

Officially, the improvements to Link-Time Optimization in the forthcoming release of GCC 4.8.0 is rewriting the LTO partitioning for "better reliability and maintainability." The GCC change-log notes that several important bugs leading to link failures have been fixed. Being in a mood to do some new compiler benchmarks this weekend (and needing to test some new compiler-related features for the forthcoming release of Phoronix Test Suite 4.4-Forsand), I did a quick few on GCC 4.7 and 4.8 while testing LTO. My last article on the subject was the GCC 4.7 Link-Time Optimization Performance from August. If you're not familiar with LTO, read the aforelinked article for more details on what LTO means for GCC and how to exploit the potentially performance-enhancing feature.

Embedded in this posting are just a couple of the benchmark results where there was something to see while the system software/hardware details, system logs, and other test profile results can be found on OpenBenchmarking.org within 1302087-FO-GCC48LINK37. For GCC 4.8.0, the late January development snapshot was used.

BYTE's Dhrystone 2 test is one of the few cases where LTO has a marked performance difference. GCC 4.8 was slightly faster than GCC 4.7 on the Intel Core i7 "Ivy Bridge" system, but when enabling LTO it was of less advantage than under GCC 4.7.2.

Regardless of the impact on the performance of the resulting binary, the compilation time takes longer when enabling LTO due to the optimizations being done, well, at link-time.

LTO did cause the performance to regress for the widely-used Bullet Physics Engine.

In another result file (1302092-FO-GCC48LTO575) are a couple of more LTO benchmarks of the Core i7 system on the GCC 4.8.0 snapshot. With these extra benchmarks, the "-fwhole-program" compile-time switch was also tested beyond just "-flto" for enabling LTO. The "-fwhole-program" switch is to let the compiler "assume that the current compilation unit represents the whole program being compiled."

Find more compiler benchmarks at OpenBenchmarking.org.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
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. Intel Linux OpenGL Driver Leading Over Apple OS X
  2. The Cost Of Ubuntu Disk Encryption
  3. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  4. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
Latest Linux News
  1. Debian GNU/Hurd 2013 Release Brings New Packages
  2. Intel Ultrabook Performance Is Faster With Mesa 9.2
  3. Hot Relocation HDD To SSD Support For Btrfs
  4. Phoronix Test Suite 4.6.0 "Utsira" Released
  5. New Intel X.Org Driver Supports All Of Haswell
  6. SQLite Now Faster With Memory Mapped I/O
  7. Microsoft Releases Skype For Linux 4.2, Has Bug-Fixes
  8. Qt For Tizen Launches, Based On Qt 5.1
  9. KTAP Released For Linux Kernel Dynamic Tracing
  10. Linux 3.10-rc2 Kernel Takes In A Few Extra Pulls
  11. QEMU 1.5 Supports VGA Passthrough, Better USB 3.0
Latest Forum Talk
  1. The Cost Of Ubuntu Disk Encryption
  2. DRM Moves Ahead With HTML5 Specification
  3. Kubuntu, KDE Has Little Hope For Ubuntu's Mir
  4. Linux's "Ondemand" Governor Is No...
  5. SQLite Now Faster With Memory Mapped I/O
  6. Intel Ultrabook Performance Is Faster With Mesa...
  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