The Computer Language
23.03 Benchmarks Game

Java versus C gcc fastest performance

Always look at the source code.

If the fastest programs are hand-written vector instructions, does the host language matter? You might be more interested in the less optimised programs — more seconds, less gz source code.

fannkuch-redux
source secs mem gz cpu secs
C gcc #6 2.10 11,236 1576 8.34
C gcc #4 14.04 11,236 1183 14.03
C gcc #5 7.53 11,224 910 29.37
C gcc #3 39.56 11,248 567 39.56
Java #3 40.36 39,932 1257 40.43
C gcc 42.02 11,244 508 42.02
Java 10.71 40,324 1282 42.25
C gcc #2 11.12 11,236 1557 43.67
Java #2 46.85 38,492 514 46.91
n-body
source secs mem gz cpu secs
C gcc #9 2.08 11,392 1633 2.08
C gcc #8 4.01 11,392 1391 4.01
C gcc #4 4.41 11,392 1490 4.41
C gcc #5 5.42 11,392 1429 5.42
C gcc #6 6.61 11,392 1180 6.60
C gcc #2 6.70 11,392 1263 6.70
C gcc 6.75 11,392 1173 6.75
C gcc #7 6.80 11,392 1244 6.80
Java #5 6.77 40,632 1429 6.82
Java #4 6.86 40,516 1489 6.89
C gcc #3 7.25 11,392 1208 7.25
Java #2 7.32 40,508 1424 7.37
Java #3 7.38 40,492 1430 7.43
Java 7.76 40,724 1430 7.80
spectral-norm
source secs mem gz cpu secs
C gcc #6 0.40 11,392 1197 1.57
C gcc #4 0.71 11,392 1139 2.84
C gcc #7 0.71 11,392 900 2.84
C gcc #5 0.73 11,392 569 2.87
C gcc 5.39 11,392 383 5.38
C gcc #3 1.44 11,392 463 5.70
Java #3 1.54 42,324 756 5.93
Java 7.02 41,448 514 7.09
Java #2 2.39 41,092 950 9.25
C gcc #8   Make Error  
mandelbrot
source secs mem gz cpu secs
C gcc #6 1.30 32,992 1135 5.17
C gcc #8 1.63 33,256 782 6.29
C gcc #4 3.47 32,576 799 13.86
C gcc #7 3.49 33,000 994 13.87
C gcc 3.47 32,532 822 13.88
C gcc #3 3.52 32,860 763 14.07
Java #4 4.39 101,236 660 16.12
Java #2 4.11 83,924 796 16.21
C gcc #9 4.25 33,036 694 16.41
Java #6 4.27 84,532 802 16.86
C gcc #2 25.21 11,180 406 25.21
Java 25.66 40,860 665 25.73
Java #3 7.37 88,056 903 29.24
pidigits
source secs mem gz cpu secs
C gcc #2 0.81 11,392 416 0.81
C gcc 0.88 11,392 452 0.88
Java #3 0.92 38,380 764 0.95
Java #2 1.34 41,352 938 1.42
Java 7.44 430,616 800 8.45
regex-redux
source secs mem gz cpu secs
C gcc #5 0.80 152,148 1397 2.02
C gcc #2 3.22 103,248 1115 3.22
C gcc #4 0.94 152,004 1230 3.26
C gcc #3 1.72 103,812 1266 3.30
Java 8.58 767,552 868 16.68
Java #6 5.40 637,728 740 17.08
Java #3 5.45 736,544 929 17.42
fasta
source secs mem gz cpu secs
C gcc #9 0.78 11,284 1463 0.78
C gcc #5 1.30 11,392 1281 1.30
C gcc #6 0.94 11,392 1930 2.76
C gcc #8 2.91 11,392 1293 2.91
C gcc #4 3.07 11,392 1240 3.07
C gcc #2 0.81 11,392 2268 3.23
C gcc #7 0.84 11,392 2011 3.26
Java #4 3.17 40,400 1524 3.27
Java #6 1.16 46,068 2543 3.65
C gcc 3.72 11,392 1206 3.72
Java #5 1.23 46,180 2473 3.79
Java #2 4.32 44,708 1257 4.45
C gcc #3 4.49 11,288 819 4.49
k-nucleotide
source secs mem gz cpu secs
C gcc 3.77 129,952 1506 12.67
Java 5.03 361,196 1812 16.40
Java #6 7.17 357,700 1607 25.04
Java #3 7.12 357,568 1635 25.06
Java #4 35.38 201,052 1882 35.83
Java #5 18.82 208,376 2219 40.84
reverse-complement
source secs mem gz cpu secs
C gcc #7 0.43 499,200 1895 0.62
C gcc #8 0.48 499,404 1543 0.80
C gcc #6 0.89 715,812 820 1.28
C gcc #5 1.46 993,848 647 1.46
C gcc #2 1.01 993,892 750 1.52
C gcc #4 3.68 500,380 709 3.68
Java #6 3.02 2,027,152 752 3.69
Java #5 4.46 1,094,060 1108 4.58
Java #4 5.51 1,886,052 651 5.62
Java #7 24.15 1,032,956 1647 6.20
Java #3   Bad Output  
Java #8   Bad Output  
binary-trees
source secs mem gz cpu secs
C gcc #2 1.57 168,448 809 4.11
C gcc #3 1.73 134,444 836 4.46
Java #4 4.47 2,116,292 840 5.15
Java #6 4.88 2,058,280 529 5.59
Java #3 4.91 2,101,240 540 5.61
Java #2 5.05 2,095,888 552 5.73
Java #7 2.52 1,726,148 835 7.89
C gcc 21.78 264,232 654 21.78
C gcc #5 8.49 351,268 908 31.09
Java

openjdk 20 2023-03-21
OpenJDK Runtime Environment
(build 20+36-2344)
OpenJDK 64-Bit Server VM
(build build 20+36-2344
mixed mode, sharing)

C gcc

12.2.0-3ubuntu1