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