Early GCC 7.0 vs. LLVM Clang 4.0 Benchmarking On Intel x86_64 Linux Intel Core i7-6800K testing of GCC 7.0 snapshot versus GCC 6.2 and GCC 5.4 then compared to LLVM Clang 3.9 and LLVM Clang 4.0 SVN from start of December. Tests by Michael Larabel for a future article on Phoronix.
HTML result view exported from: https://openbenchmarking.org/result/1612058-TA-LLVMCLANG83&grs&rdt .
Early GCC 7.0 vs. LLVM Clang 4.0 Benchmarking On Intel x86_64 Linux Processor Motherboard Chipset Memory Disk Graphics Audio Monitor Network OS Kernel Desktop Display Server Display Driver OpenGL Compiler File-System Screen Resolution GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 Intel Core i7-6800K @ 3.80GHz (12 Cores) MSI X99A WORKSTATION (MS-7A54) v1.0 Intel Xeon E7 v4/Xeon 16384MB 120GB Samsung SSD 850 + 4 x 120GB TOSHIBA-TR150 NVIDIA GeForce GTX TITAN X 12288MB Realtek ALC1150 ASUS PB278 Intel Connection Ubuntu 16.10 4.8.0-28-generic (x86_64) Unity 7.5.0 X Server 1.18.4 nouveau 1.0.12 3.3 Mesa 12.0.3 Gallium 0.4 GCC 6.2.0 ext4 2560x1440 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0.0-svn288274-1~exp1 + LLVM 4.0.0 Clang 3.9.0-1ubuntu1 + LLVM 3.9.0 OpenBenchmarking.org Compiler Details - GCC 6.2.0, GCC 7.0.0 20161127, GCC 5.4.0: --disable-multilib --enable-checking=release --enable-languages=c,c++ Disk Details - DEADLINE / data=ordered,errors=remount-ro,relatime,rw Processor Details - Scaling Governor: intel_pstate powersave
Early GCC 7.0 vs. LLVM Clang 4.0 Benchmarking On Intel x86_64 Linux hmmer: Pfam Database Search build-imagemagick: Time To Compile c-ray: Total Time scimark2: Jacobi Successive Over-Relaxation scimark2: Composite himeno: Poisson Pressure Solver encode-mp3: WAV To MP3 mafft: Multiple Sequence Alignment fftw: Float + SSE - 2D FFT Size 4096 build-php: Time To Compile scimark2: Fast Fourier Transform pgbench: Buffer Test - Single Thread - Read Write pgbench: Buffer Test - Normal Load - Read Write pgbench: Buffer Test - Heavy Contention - Read Write sqlite: Default Test Directory openssl: RSA 4096-bit Performance redis: SET redis: GET ebizzy: Phoronix Test Suite v6.8.0m3 tscp: AI Chess Performance scimark2: Dense LU Matrix Factorization scimark2: Sparse Matrix Multiply scimark2: Monte Carlo GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 6.83 64.52 12.15 1211.24 1482.31 2213.13 10.53 3.82 14448 19.70 339.06 622.56 7946.48 8683.69 25.86 981.10 1412803.00 2152314.25 188944 1323732 2719.95 2562.90 578.41 6.83 51.89 13.86 1208.50 1596.12 2190.51 10.48 3.80 14130 19.72 341.96 636.23 7988.08 8677.26 25.73 983.03 1338386.50 1906819.19 186377 1214625 3232.73 2475.93 601.84 6.79 43.84 12.21 1210.94 1500.47 1816.29 10.53 3.56 13802 18.91 338.82 627.37 7958.56 8761.90 25.82 981.53 1576321.21 2063098.71 189694 1267857 2720.20 2590.28 642.13 11.62 41.86 18.55 1839.03 2098.33 1712.26 12.17 4.57 12176 18.04 325.68 656.41 8077.95 8787.78 26.04 977.90 1236827.73 1687609.64 420930 1177823 5601.59 2401.83 323.49 6.92 42.12 18.13 1816.33 2193.88 1687.12 13.56 3.95 13390 20.38 348.00 624.45 7932.28 8694.84 25.73 975.60 1485797.94 1998162.08 207220 1221729 5670.88 2865.19 268.97 OpenBenchmarking.org
Timed HMMer Search Pfam Database Search OpenBenchmarking.org Seconds, Fewer Is Better Timed HMMer Search 2.3.2 Pfam Database Search GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 3 6 9 12 15 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 6.83 6.83 6.79 11.62 6.92 1. (CC) gcc options: -O3 -march=native -pthread -lhmmer -lsquid -lm
Timed ImageMagick Compilation Time To Compile OpenBenchmarking.org Seconds, Fewer Is Better Timed ImageMagick Compilation 6.9.0 Time To Compile GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 14 28 42 56 70 SE +/- 0.14, N = 3 SE +/- 0.17, N = 3 SE +/- 0.21, N = 3 SE +/- 0.01, N = 3 SE +/- 0.03, N = 3 64.52 51.89 43.84 41.86 42.12
C-Ray Total Time OpenBenchmarking.org Seconds, Fewer Is Better C-Ray 1.1 Total Time GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 5 10 15 20 25 SE +/- 0.01, N = 3 SE +/- 0.02, N = 3 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 12.15 13.86 12.21 18.55 18.13 1. (CC) gcc options: -lm -lpthread -O3 -march=native
SciMark Computational Test: Jacobi Successive Over-Relaxation OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Jacobi Successive Over-Relaxation GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 400 800 1200 1600 2000 SE +/- 0.08, N = 4 SE +/- 1.69, N = 4 SE +/- 0.27, N = 4 SE +/- 25.10, N = 4 SE +/- 0.12, N = 4 1211.24 1208.50 1210.94 1839.03 1816.33 1. (CXX) g++ options: -O3 -march=native
SciMark Computational Test: Composite OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Composite GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 500 1000 1500 2000 2500 SE +/- 6.64, N = 4 SE +/- 25.27, N = 8 SE +/- 1.02, N = 4 SE +/- 23.61, N = 4 SE +/- 6.94, N = 4 1482.31 1596.12 1500.47 2098.33 2193.88 1. (CXX) g++ options: -O3 -march=native
Himeno Benchmark Poisson Pressure Solver OpenBenchmarking.org MFLOPS, More Is Better Himeno Benchmark 3.0 Poisson Pressure Solver GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 500 1000 1500 2000 2500 SE +/- 28.84, N = 3 SE +/- 0.19, N = 3 SE +/- 1.37, N = 3 SE +/- 28.28, N = 3 SE +/- 25.04, N = 5 2213.13 2190.51 1816.29 1712.26 1687.12 1. (CC) gcc options: -O3 -march=native -mavx2
LAME MP3 Encoding WAV To MP3 OpenBenchmarking.org Seconds, Fewer Is Better LAME MP3 Encoding 3.99.3 WAV To MP3 GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 3 6 9 12 15 SE +/- 0.01, N = 5 SE +/- 0.02, N = 5 SE +/- 0.14, N = 5 SE +/- 0.15, N = 8 SE +/- 0.01, N = 5 10.53 10.48 10.53 12.17 13.56 1. (CC) gcc options: -O3 -ffast-math -funroll-loops -fschedule-insns2 -fbranch-count-reg -fforce-addr -pipe -march=native -lm
Timed MAFFT Alignment Multiple Sequence Alignment OpenBenchmarking.org Seconds, Fewer Is Better Timed MAFFT Alignment 6.864 Multiple Sequence Alignment GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 1.0283 2.0566 3.0849 4.1132 5.1415 SE +/- 0.08, N = 6 SE +/- 0.07, N = 6 SE +/- 0.04, N = 3 SE +/- 0.07, N = 6 SE +/- 0.03, N = 3 3.82 3.80 3.56 4.57 3.95 1. (CC) gcc options: -O3 -lm -lpthread
FFTW Build: Float + SSE - Size: 2D FFT Size 4096 OpenBenchmarking.org Mflops, More Is Better FFTW 3.3.4 Build: Float + SSE - Size: 2D FFT Size 4096 GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 3K 6K 9K 12K 15K SE +/- 147.31, N = 5 SE +/- 41.05, N = 5 SE +/- 54.71, N = 5 SE +/- 136.50, N = 5 SE +/- 130.03, N = 5 14448 14130 13802 12176 13390 1. (CC) gcc options: -O3 -march=native -lm
Timed PHP Compilation Time To Compile OpenBenchmarking.org Seconds, Fewer Is Better Timed PHP Compilation 5.2.9 Time To Compile GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 5 10 15 20 25 SE +/- 0.09, N = 3 SE +/- 0.03, N = 3 SE +/- 0.07, N = 3 SE +/- 0.04, N = 3 SE +/- 0.19, N = 3 19.70 19.72 18.91 18.04 20.38 -lz -lz -lz -lz 1. (CC) gcc options: -O3 -march=native -pedantic -ldl -lm
SciMark Computational Test: Fast Fourier Transform OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Fast Fourier Transform GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 80 160 240 320 400 SE +/- 0.70, N = 4 SE +/- 0.91, N = 4 SE +/- 0.66, N = 4 SE +/- 3.27, N = 4 SE +/- 0.59, N = 4 339.06 341.96 338.82 325.68 348.00 1. (CXX) g++ options: -O3 -march=native
PostgreSQL pgbench Scaling: Buffer Test - Test: Single Thread - Mode: Read Write OpenBenchmarking.org TPS, More Is Better PostgreSQL pgbench 9.4.3 Scaling: Buffer Test - Test: Single Thread - Mode: Read Write GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 140 280 420 560 700 SE +/- 3.56, N = 3 SE +/- 2.77, N = 3 SE +/- 5.49, N = 3 SE +/- 4.79, N = 3 SE +/- 10.71, N = 4 622.56 636.23 627.37 656.41 624.45 -pthreads -mthreads -pthreads -mthreads 1. (CC) gcc options: -fno-strict-aliasing -fwrapv -O3 -march=native -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm
PostgreSQL pgbench Scaling: Buffer Test - Test: Normal Load - Mode: Read Write OpenBenchmarking.org TPS, More Is Better PostgreSQL pgbench 9.4.3 Scaling: Buffer Test - Test: Normal Load - Mode: Read Write GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 2K 4K 6K 8K 10K SE +/- 41.91, N = 3 SE +/- 31.36, N = 3 SE +/- 29.99, N = 3 SE +/- 42.95, N = 3 SE +/- 37.40, N = 3 7946.48 7988.08 7958.56 8077.95 7932.28 -pthreads -mthreads -pthreads -mthreads 1. (CC) gcc options: -fno-strict-aliasing -fwrapv -O3 -march=native -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm
PostgreSQL pgbench Scaling: Buffer Test - Test: Heavy Contention - Mode: Read Write OpenBenchmarking.org TPS, More Is Better PostgreSQL pgbench 9.4.3 Scaling: Buffer Test - Test: Heavy Contention - Mode: Read Write GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 2K 4K 6K 8K 10K SE +/- 48.41, N = 3 SE +/- 31.43, N = 3 SE +/- 77.01, N = 3 SE +/- 53.05, N = 3 SE +/- 56.41, N = 3 8683.69 8677.26 8761.90 8787.78 8694.84 -pthreads -mthreads -pthreads -mthreads 1. (CC) gcc options: -fno-strict-aliasing -fwrapv -O3 -march=native -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm
SQLite Test Target: Default Test Directory OpenBenchmarking.org Seconds, Fewer Is Better SQLite 3.8.10.2 Test Target: Default Test Directory GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 6 12 18 24 30 SE +/- 0.17, N = 3 SE +/- 0.26, N = 3 SE +/- 0.15, N = 3 SE +/- 0.04, N = 3 SE +/- 0.34, N = 3 25.86 25.73 25.82 26.04 25.73 1. (CC) gcc options: -O3 -march=native -ldl -lpthread
OpenSSL RSA 4096-bit Performance OpenBenchmarking.org Signs Per Second, More Is Better OpenSSL 1.0.1g RSA 4096-bit Performance GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 200 400 600 800 1000 SE +/- 0.35, N = 3 SE +/- 0.29, N = 3 SE +/- 3.40, N = 3 SE +/- 0.45, N = 3 SE +/- 0.15, N = 3 981.10 983.03 981.53 977.90 975.60 1. (CC) gcc options: -m64 -O3 -lssl -lcrypto -ldl
Redis Test: SET OpenBenchmarking.org Requests Per Second, More Is Better Redis 3.0.1 Test: SET GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 300K 600K 900K 1200K 1500K SE +/- 74386.96, N = 6 SE +/- 14086.60, N = 3 SE +/- 57176.48, N = 6 SE +/- 46245.04, N = 6 SE +/- 56182.94, N = 6 1412803.00 1338386.50 1576321.21 1236827.73 1485797.94 -std=gnu99 -pipe -g3 -O3 -funroll-loops -march=native 1. (CC) gcc options: -ggdb -rdynamic -lm -pthread -ldl
Redis Test: GET OpenBenchmarking.org Requests Per Second, More Is Better Redis 3.0.1 Test: GET GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 500K 1000K 1500K 2000K 2500K SE +/- 43300.91, N = 3 SE +/- 70859.43, N = 6 SE +/- 101610.92, N = 6 SE +/- 66082.79, N = 6 SE +/- 84913.76, N = 6 2152314.25 1906819.19 2063098.71 1687609.64 1998162.08 -std=gnu99 -pipe -g3 -O3 -funroll-loops -march=native 1. (CC) gcc options: -ggdb -rdynamic -lm -pthread -ldl
ebizzy Phoronix Test Suite v6.8.0m3 OpenBenchmarking.org Records/s, More Is Better ebizzy 0.3 Phoronix Test Suite v6.8.0m3 GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 90K 180K 270K 360K 450K SE +/- 472.32, N = 3 SE +/- 4882.08, N = 6 SE +/- 5429.90, N = 6 SE +/- 590.05, N = 3 SE +/- 467.06, N = 3 188944 186377 189694 420930 207220 1. (CC) gcc options: -pthread -lpthread -O3 -march=native
TSCP AI Chess Performance OpenBenchmarking.org Nodes Per Second, More Is Better TSCP 1.81 AI Chess Performance GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 300K 600K 900K 1200K 1500K SE +/- 22912.67, N = 3 SE +/- 23083.56, N = 10 SE +/- 13238.20, N = 5 SE +/- 15337.47, N = 10 SE +/- 30092.30, N = 10 1323732 1214625 1267857 1177823 1221729 1. (CC) gcc options: -O3 -march=native
SciMark Computational Test: Dense LU Matrix Factorization OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Dense LU Matrix Factorization GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 1200 2400 3600 4800 6000 SE +/- 2.50, N = 4 SE +/- 105.82, N = 4 SE +/- 2.83, N = 4 SE +/- 58.28, N = 4 SE +/- 32.49, N = 4 2719.95 3232.73 2720.20 5601.59 5670.88 1. (CXX) g++ options: -O3 -march=native
SciMark Computational Test: Sparse Matrix Multiply OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Sparse Matrix Multiply GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 600 1200 1800 2400 3000 SE +/- 3.29, N = 4 SE +/- 116.86, N = 4 SE +/- 2.85, N = 4 SE +/- 27.44, N = 4 SE +/- 3.08, N = 4 2562.90 2475.93 2590.28 2401.83 2865.19 1. (CXX) g++ options: -O3 -march=native
SciMark Computational Test: Monte Carlo OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Monte Carlo GCC 6.2.0 GCC 7.0.0 20161127 GCC 5.4.0 Clang 4.0 SVN Clang 3.9.0 140 280 420 560 700 SE +/- 36.88, N = 4 SE +/- 32.30, N = 4 SE +/- 0.01, N = 4 SE +/- 4.41, N = 4 SE +/- 0.02, N = 4 578.41 601.84 642.13 323.49 268.97 1. (CXX) g++ options: -O3 -march=native
Phoronix Test Suite v10.8.4