GCC 4.9.0 Compiler Optimization Tuning Testing various CFLAGS/CXXFLAGS of different GCC compiler optimizations including the -O optimization levels, Link Time Optimizations, and -march=native targeting. benchmarks by Michael Larabel for a future article on phoronix.com -O0: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -O1: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -O2: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -Os: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -Og: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -O3: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -Ofast: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -O3 -march=native: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 -O3 -march=native -flto: Processor: Intel Core i7-4770K @ 3.50GHz (8 Cores), Motherboard: ECS Z87H3-A2X EXTREME v1.0, Chipset: Intel 4th Gen Core DRAM, Memory: 16384MB, Disk: 120GB Samsung SSD 840, Graphics: ECS NVIDIA GeForce GTX 460 768MB (675/1804MHz), Audio: Realtek ALC1150, Monitor: Samsung SyncMaster, Network: Realtek RTL8111/8168/8411 OS: Ubuntu 14.04, Kernel: 3.13.0-22-generic (x86_64), Desktop: Unity 7.2.0, Display Server: X Server 1.15.0, Display Driver: NVIDIA 337.12, OpenGL: 4.3.0, Compiler: GCC 4.9.0 20140411, File-System: ext4, Screen Resolution: 2560x1600 GraphicsMagick 1.3.19 Operation: Blur Iterations Per Minute > Higher Is Better -O0 ..................... 99 |============================= -O1 ..................... 164 |================================================ -O2 ..................... 161 |=============================================== -Os ..................... 141 |========================================= -Og ..................... 152 |============================================ -O3 ..................... 164 |================================================ -Ofast .................. 163 |=============================================== -O3 -march=native ....... 165 |================================================ -O3 -march=native -flto . 165 |================================================ GraphicsMagick 1.3.19 Operation: Sharpen Iterations Per Minute > Higher Is Better -O0 ..................... 54 |=================== -O1 ..................... 125 |=========================================== -O2 ..................... 128 |============================================ -Os ..................... 109 |===================================== -Og ..................... 83 |============================ -O3 ..................... 127 |============================================ -Ofast .................. 126 |=========================================== -O3 -march=native ....... 140 |================================================ -O3 -march=native -flto . 140 |================================================ GraphicsMagick 1.3.19 Operation: Resizing Iterations Per Minute > Higher Is Better -O0 ..................... 100 |======================== -O1 ..................... 192 |=============================================== -O2 ..................... 192 |=============================================== -Os ..................... 187 |============================================= -Og ..................... 174 |========================================== -O3 ..................... 191 |============================================== -Ofast .................. 192 |=============================================== -O3 -march=native ....... 198 |================================================ -O3 -march=native -flto . 198 |================================================ GraphicsMagick 1.3.19 Operation: HWB Color Space Iterations Per Minute > Higher Is Better -O0 ..................... 127 |=========================== -O1 ..................... 215 |============================================== -O2 ..................... 213 |============================================== -Os ..................... 215 |============================================== -Og ..................... 209 |============================================= -O3 ..................... 212 |============================================= -Ofast .................. 224 |================================================ -O3 -march=native ....... 213 |============================================== -O3 -march=native -flto . 213 |============================================== GraphicsMagick 1.3.19 Operation: Local Adaptive Thresholding Iterations Per Minute > Higher Is Better -O0 ..................... 20 |========= -O1 ..................... 96 |============================================= -O2 ..................... 97 |============================================== -Os ..................... 78 |===================================== -Og ..................... 63 |============================== -O3 ..................... 97 |============================================== -Ofast .................. 97 |============================================== -O3 -march=native ....... 102 |================================================ -O3 -march=native -flto . 102 |================================================ Himeno Benchmark 3.0 Poisson Pressure Solver MFLOPS > Higher Is Better -O0 ..................... 479.71 |=========== -O1 ..................... 1158.41 |========================== -O2 ..................... 1919.66 |=========================================== -Os ..................... 1250.49 |============================ -Og ..................... 1240.97 |============================ -O3 ..................... 1958.10 |============================================ -Ofast .................. 1960.56 |============================================ -O3 -march=native ....... 1827.55 |========================================= -O3 -march=native -flto . 1825.39 |========================================= Timed Apache Compilation 2.4.7 Time To Compile Seconds < Lower Is Better -O0 ..................... 13.63 |============== -O1 ..................... 19.42 |==================== -O2 ..................... 24.66 |========================= -Os ..................... 23.08 |======================= -Og ..................... 17.70 |================== -O3 ..................... 27.32 |============================ -Ofast .................. 27.39 |============================ -O3 -march=native ....... 27.83 |============================ -O3 -march=native -flto . 45.49 |============================================== Timed ImageMagick Compilation 6.8.1-10 Time To Compile Seconds < Lower Is Better -O0 ..................... 16.70 |====== -O1 ..................... 32.31 |=========== -O2 ..................... 47.38 |================ -Os ..................... 40.82 |============== -Og ..................... 26.08 |========= -O3 ..................... 59.07 |==================== -O3 -march=native ....... 60.90 |===================== -O3 -march=native -flto . 130.29 |============================================= Timed PHP Compilation 5.2.9 Time To Compile Seconds < Lower Is Better -O0 ..................... 10.21 |===== -O1 ..................... 17.16 |======== -O2 ..................... 22.96 |=========== -Os ..................... 20.24 |========== -Og ..................... 14.95 |======= -O3 ..................... 26.22 |============= -Ofast .................. 26.30 |============= -O3 -march=native ....... 27.01 |============= -O3 -march=native -flto . 95.96 |============================================== C-Ray 1.1 Total Time Seconds < Lower Is Better -O0 ..................... 63.93 |============================================= -O1 ..................... 44.23 |=============================== -O2 ..................... 40.42 |============================ -Os ..................... 65.76 |============================================== -Og ..................... 43.35 |============================== -O3 ..................... 22.82 |================ -Ofast .................. 22.65 |================ -O3 -march=native ....... 17.09 |============ -O3 -march=native -flto . 17.09 |============ FLAC Audio Encoding 1.3.0 WAV To FLAC Seconds < Lower Is Better -O0 ..................... 19.85 |============================================== -O1 ..................... 5.56 |============= -O2 ..................... 5.37 |============ -Os ..................... 5.96 |============== -Og ..................... 6.14 |============== -O3 ..................... 4.63 |=========== -Ofast .................. 4.52 |========== -O3 -march=native ....... 3.61 |======== -O3 -march=native -flto . 3.62 |======== LAME MP3 Encoding 3.99.3 WAV To MP3 Seconds < Lower Is Better -O0 ..................... 33.12 |============================================== -O1 ..................... 15.01 |===================== -O2 ..................... 12.54 |================= -Os ..................... 14.20 |==================== -Og ..................... 15.55 |====================== -O3 ..................... 11.83 |================ -Ofast .................. 11.49 |================ -O3 -march=native ....... 10.87 |=============== -O3 -march=native -flto . 10.87 |=============== Hierarchical INTegration 1.0 Test: FLOAT QUIPs > Higher Is Better -O0 ..................... 113640165.43 |============ -O1 ..................... 272724038.56 |============================ -O2 ..................... 357045741.73 |===================================== -Os ..................... 338799356.97 |=================================== -Og ..................... 276760433.28 |============================= -O3 ..................... 353630824.75 |===================================== -Ofast .................. 372135723.16 |======================================= -O3 -march=native ....... 373780357.46 |======================================= -O3 -march=native -flto . 372669017.17 |=======================================