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 .
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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 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 5.4.0 ext4 2560x1440 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0-1ubuntu1 + LLVM 3.9.0 Clang 4.0.0-svn288274-1~exp1 + LLVM 4.0.0 OpenBenchmarking.org Compiler Details - GCC 5.4.0, GCC 6.2.0, GCC 7.0.0 20161127: --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 sqlite: Default Test Directory fftw: Float + SSE - 2D FFT Size 4096 hmmer: Pfam Database Search mafft: Multiple Sequence Alignment scimark2: Composite scimark2: Monte Carlo scimark2: Fast Fourier Transform scimark2: Sparse Matrix Multiply scimark2: Dense LU Matrix Factorization scimark2: Jacobi Successive Over-Relaxation tscp: AI Chess Performance himeno: Poisson Pressure Solver ebizzy: Phoronix Test Suite v6.8.0m3 build-imagemagick: Time To Compile build-php: Time To Compile c-ray: Total Time encode-mp3: WAV To MP3 openssl: RSA 4096-bit Performance pgbench: Buffer Test - Normal Load - Read Write pgbench: Buffer Test - Single Thread - Read Write pgbench: Buffer Test - Heavy Contention - Read Write redis: GET redis: SET GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 25.82 13802 6.79 3.56 1500.47 642.13 338.82 2590.28 2720.20 1210.94 1267857 1816.29 189694 43.84 18.91 12.21 10.53 981.53 7958.56 627.37 8761.90 2063098.71 1576321.21 25.86 14448 6.83 3.82 1482.31 578.41 339.06 2562.90 2719.95 1211.24 1323732 2213.13 188944 64.52 19.70 12.15 10.53 981.10 7946.48 622.56 8683.69 2152314.25 1412803.00 25.73 14130 6.83 3.80 1596.12 601.84 341.96 2475.93 3232.73 1208.50 1214625 2190.51 186377 51.89 19.72 13.86 10.48 983.03 7988.08 636.23 8677.26 1906819.19 1338386.50 25.73 13390 6.92 3.95 2193.88 268.97 348.00 2865.19 5670.88 1816.33 1221729 1687.12 207220 42.12 20.38 18.13 13.56 975.60 7932.28 624.45 8694.84 1998162.08 1485797.94 26.04 12176 11.62 4.57 2098.33 323.49 325.68 2401.83 5601.59 1839.03 1177823 1712.26 420930 41.86 18.04 18.55 12.17 977.90 8077.95 656.41 8787.78 1687609.64 1236827.73 OpenBenchmarking.org
SQLite Test Target: Default Test Directory OpenBenchmarking.org Seconds, Fewer Is Better SQLite 3.8.10.2 Test Target: Default Test Directory GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 6 12 18 24 30 SE +/- 0.15, N = 3 SE +/- 0.17, N = 3 SE +/- 0.26, N = 3 SE +/- 0.34, N = 3 SE +/- 0.04, N = 3 25.82 25.86 25.73 25.73 26.04 1. (CC) gcc options: -O3 -march=native -ldl -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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 3K 6K 9K 12K 15K SE +/- 54.71, N = 5 SE +/- 147.31, N = 5 SE +/- 41.05, N = 5 SE +/- 130.03, N = 5 SE +/- 136.50, N = 5 13802 14448 14130 13390 12176 1. (CC) gcc options: -O3 -march=native -lm
Timed HMMer Search Pfam Database Search OpenBenchmarking.org Seconds, Fewer Is Better Timed HMMer Search 2.3.2 Pfam Database Search GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 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.79 6.83 6.83 6.92 11.62 1. (CC) gcc options: -O3 -march=native -pthread -lhmmer -lsquid -lm
Timed MAFFT Alignment Multiple Sequence Alignment OpenBenchmarking.org Seconds, Fewer Is Better Timed MAFFT Alignment 6.864 Multiple Sequence Alignment GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 1.0283 2.0566 3.0849 4.1132 5.1415 SE +/- 0.04, N = 3 SE +/- 0.08, N = 6 SE +/- 0.07, N = 6 SE +/- 0.03, N = 3 SE +/- 0.07, N = 6 3.56 3.82 3.80 3.95 4.57 1. (CC) gcc options: -O3 -lm -lpthread
SciMark Computational Test: Composite OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Composite GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 500 1000 1500 2000 2500 SE +/- 1.02, N = 4 SE +/- 6.64, N = 4 SE +/- 25.27, N = 8 SE +/- 6.94, N = 4 SE +/- 23.61, N = 4 1500.47 1482.31 1596.12 2193.88 2098.33 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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 140 280 420 560 700 SE +/- 0.01, N = 4 SE +/- 36.88, N = 4 SE +/- 32.30, N = 4 SE +/- 0.02, N = 4 SE +/- 4.41, N = 4 642.13 578.41 601.84 268.97 323.49 1. (CXX) g++ options: -O3 -march=native
SciMark Computational Test: Fast Fourier Transform OpenBenchmarking.org Mflops, More Is Better SciMark 2.0 Computational Test: Fast Fourier Transform GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 80 160 240 320 400 SE +/- 0.66, N = 4 SE +/- 0.70, N = 4 SE +/- 0.91, N = 4 SE +/- 0.59, N = 4 SE +/- 3.27, N = 4 338.82 339.06 341.96 348.00 325.68 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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 600 1200 1800 2400 3000 SE +/- 2.85, N = 4 SE +/- 3.29, N = 4 SE +/- 116.86, N = 4 SE +/- 3.08, N = 4 SE +/- 27.44, N = 4 2590.28 2562.90 2475.93 2865.19 2401.83 1. (CXX) g++ 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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 1200 2400 3600 4800 6000 SE +/- 2.83, N = 4 SE +/- 2.50, N = 4 SE +/- 105.82, N = 4 SE +/- 32.49, N = 4 SE +/- 58.28, N = 4 2720.20 2719.95 3232.73 5670.88 5601.59 1. (CXX) g++ options: -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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 400 800 1200 1600 2000 SE +/- 0.27, N = 4 SE +/- 0.08, N = 4 SE +/- 1.69, N = 4 SE +/- 0.12, N = 4 SE +/- 25.10, N = 4 1210.94 1211.24 1208.50 1816.33 1839.03 1. (CXX) g++ options: -O3 -march=native
TSCP AI Chess Performance OpenBenchmarking.org Nodes Per Second, More Is Better TSCP 1.81 AI Chess Performance GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 300K 600K 900K 1200K 1500K SE +/- 13238.20, N = 5 SE +/- 22912.67, N = 3 SE +/- 23083.56, N = 10 SE +/- 30092.30, N = 10 SE +/- 15337.47, N = 10 1267857 1323732 1214625 1221729 1177823 1. (CC) gcc options: -O3 -march=native
Himeno Benchmark Poisson Pressure Solver OpenBenchmarking.org MFLOPS, More Is Better Himeno Benchmark 3.0 Poisson Pressure Solver GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 500 1000 1500 2000 2500 SE +/- 1.37, N = 3 SE +/- 28.84, N = 3 SE +/- 0.19, N = 3 SE +/- 25.04, N = 5 SE +/- 28.28, N = 3 1816.29 2213.13 2190.51 1687.12 1712.26 1. (CC) gcc options: -O3 -march=native -mavx2
ebizzy Phoronix Test Suite v6.8.0m3 OpenBenchmarking.org Records/s, More Is Better ebizzy 0.3 Phoronix Test Suite v6.8.0m3 GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 90K 180K 270K 360K 450K SE +/- 5429.90, N = 6 SE +/- 472.32, N = 3 SE +/- 4882.08, N = 6 SE +/- 467.06, N = 3 SE +/- 590.05, N = 3 189694 188944 186377 207220 420930 1. (CC) gcc options: -pthread -lpthread -O3 -march=native
Timed ImageMagick Compilation Time To Compile OpenBenchmarking.org Seconds, Fewer Is Better Timed ImageMagick Compilation 6.9.0 Time To Compile GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 14 28 42 56 70 SE +/- 0.21, N = 3 SE +/- 0.14, N = 3 SE +/- 0.17, N = 3 SE +/- 0.03, N = 3 SE +/- 0.01, N = 3 43.84 64.52 51.89 42.12 41.86
Timed PHP Compilation Time To Compile OpenBenchmarking.org Seconds, Fewer Is Better Timed PHP Compilation 5.2.9 Time To Compile GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 5 10 15 20 25 SE +/- 0.07, N = 3 SE +/- 0.09, N = 3 SE +/- 0.03, N = 3 SE +/- 0.19, N = 3 SE +/- 0.04, N = 3 18.91 19.70 19.72 20.38 18.04 -lz -lz -lz -lz 1. (CC) gcc options: -O3 -march=native -pedantic -ldl -lm
C-Ray Total Time OpenBenchmarking.org Seconds, Fewer Is Better C-Ray 1.1 Total Time GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 5 10 15 20 25 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 SE +/- 0.02, N = 3 SE +/- 0.01, N = 3 SE +/- 0.01, N = 3 12.21 12.15 13.86 18.13 18.55 1. (CC) gcc options: -lm -lpthread -O3 -march=native
LAME MP3 Encoding WAV To MP3 OpenBenchmarking.org Seconds, Fewer Is Better LAME MP3 Encoding 3.99.3 WAV To MP3 GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 3 6 9 12 15 SE +/- 0.14, N = 5 SE +/- 0.01, N = 5 SE +/- 0.02, N = 5 SE +/- 0.01, N = 5 SE +/- 0.15, N = 8 10.53 10.53 10.48 13.56 12.17 1. (CC) gcc options: -O3 -ffast-math -funroll-loops -fschedule-insns2 -fbranch-count-reg -fforce-addr -pipe -march=native -lm
OpenSSL RSA 4096-bit Performance OpenBenchmarking.org Signs Per Second, More Is Better OpenSSL 1.0.1g RSA 4096-bit Performance GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 200 400 600 800 1000 SE +/- 3.40, N = 3 SE +/- 0.35, N = 3 SE +/- 0.29, N = 3 SE +/- 0.15, N = 3 SE +/- 0.45, N = 3 981.53 981.10 983.03 975.60 977.90 1. (CC) gcc options: -m64 -O3 -lssl -lcrypto -ldl
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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 2K 4K 6K 8K 10K SE +/- 29.99, N = 3 SE +/- 41.91, N = 3 SE +/- 31.36, N = 3 SE +/- 37.40, N = 3 SE +/- 42.95, N = 3 7958.56 7946.48 7988.08 7932.28 8077.95 -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: 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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 140 280 420 560 700 SE +/- 5.49, N = 3 SE +/- 3.56, N = 3 SE +/- 2.77, N = 3 SE +/- 10.71, N = 4 SE +/- 4.79, N = 3 627.37 622.56 636.23 624.45 656.41 -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 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 2K 4K 6K 8K 10K SE +/- 77.01, N = 3 SE +/- 48.41, N = 3 SE +/- 31.43, N = 3 SE +/- 56.41, N = 3 SE +/- 53.05, N = 3 8761.90 8683.69 8677.26 8694.84 8787.78 -pthreads -mthreads -pthreads -mthreads 1. (CC) gcc options: -fno-strict-aliasing -fwrapv -O3 -march=native -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm
Redis Test: GET OpenBenchmarking.org Requests Per Second, More Is Better Redis 3.0.1 Test: GET GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 500K 1000K 1500K 2000K 2500K SE +/- 101610.92, N = 6 SE +/- 43300.91, N = 3 SE +/- 70859.43, N = 6 SE +/- 84913.76, N = 6 SE +/- 66082.79, N = 6 2063098.71 2152314.25 1906819.19 1998162.08 1687609.64 -std=gnu99 -pipe -g3 -O3 -funroll-loops -march=native 1. (CC) gcc options: -ggdb -rdynamic -lm -pthread -ldl
Redis Test: SET OpenBenchmarking.org Requests Per Second, More Is Better Redis 3.0.1 Test: SET GCC 5.4.0 GCC 6.2.0 GCC 7.0.0 20161127 Clang 3.9.0 Clang 4.0 SVN 300K 600K 900K 1200K 1500K SE +/- 57176.48, N = 6 SE +/- 74386.96, N = 6 SE +/- 14086.60, N = 3 SE +/- 56182.94, N = 6 SE +/- 46245.04, N = 6 1576321.21 1412803.00 1338386.50 1485797.94 1236827.73 -std=gnu99 -pipe -g3 -O3 -funroll-loops -march=native 1. (CC) gcc options: -ggdb -rdynamic -lm -pthread -ldl
Phoronix Test Suite v10.8.4