The Computer Language
25.02 Benchmarks Game

Go versus Java naot

How the programs are written matters! 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
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Go #3 8.36 3,846 975 5.31 33.35
Java naot #3 35.64 11,809 1264 93.87 35.64
Java naot 9.07 12,694 1289 94.68 35.94
Java naot #2 44.40 10,772 520 96.06 44.41—44.45
Go #8 46.15 3,207 500 5.43 46.26—46.33
Go 12.27 4,903 906 5.41 49.09
Go #2 12.36 16,966 903 5.43 49.40
Java naot #8 51.31 11,039 517 94.87 51.30
n-body
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Java naot #4 6.01 15,213 1495 143.53 6.01
Go #3 6.39 3,191 1207 5.43 6.41
Java naot #3 6.74 15,479 1436 145.21 6.74
Java naot #2 6.75 15,483 1430 142.57 6.74
Go 7.02 3,228 1316 5.36 7.09—7.27
Go #2 7.04 3,203 1222 5.35 7.06
Java naot 7.14 17,842 1437 143.68 7.14
Java naot #8 7.18 15,483 1322 144.80 7.18
Java naot #5 7.21 15,282 1435 144.21 7.22
Go #8 9.60 3,191 1224 5.47 9.64
spectral-norm
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Java naot 5.35 18,485 521 145.31 5.34
Java naot #8 5.34 16,253 453 143.46 5.34
Go #8 5.34 3,838 429 5.35 5.36
Go 5.34 4,059 417 5.35 5.36
Go #4 1.43 4,174 555 5.45 5.69
Go #2 1.51 4,317 674 5.56 5.70
Java naot #2 1.45 19,415 956 143.96 5.70
Java naot #3 1.46 21,246 762 147.49 5.71
mandelbrot
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Go #4 3.77 37,970 912 5.49 15.02
Go #3 3.78 38,101 900 5.82 15.03
Java naot #6 3.94 45,265 808 95.80 15.63
Java naot #4 4.25 76,661 667 97.10 15.75
Java naot #2 3.99 45,236 802 95.53 15.81
Go 5.04 35,787 829 5.40 20.05
Go #8 26.70 3,199 500 5.39 26.77
Go #2 6.87 35,549 843 5.69 27.32
Go #6 6.91 35,119 707 5.69 27.48
Java naot #8 28.53 11,252 441 95.29 28.54
Java naot 30.53 15,221 671 146.09 30.53
Java naot #3 7.78 49,762 910 147.17 30.95
fasta
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Java naot #6 1.10 17,334 2549 97.72 3.13
Java naot #4 3.64 11,084 1528 97.22 3.64
Go 3.74 3,207 1055 5.36 3.76
Java naot #5 1.12 17,580 2478 94.92 3.80
Go #2 1.27 12,644 1405 5.51 4.08
Go #3 1.52 5,095 1362 5.29 4.10
Java naot #2 5.69 11,006 1259 98.09 5.69
Java naot #8 10.78 62,452 894 97.74 10.80—10.94
Go #8 11.22 9,052 880 5.55 11.54—11.80
k-nucleotide
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Java naot #6 8.32 325,120 1614 144.00 28.41—28.47
Java naot #3 8.35 324,473 1642 146.37 28.48—28.52
Go #7 7.58 168,186 1613 5.42 28.83—29.08
Java naot #4 29.05 161,108 1887 146.45 29.20—29.56
Go #3 8.20 150,413 1729 5.63 29.98—30.69
Go #6 8.30 150,442 1596 5.79 30.22—30.75
Go #4 9.27 144,650 1552 5.11 32.00—35.21
Java naot #5 14.43 172,257 2225 143.84 36.09—37.17
Go #8 61.38 558,379 752 5.20 62.37—62.83
Java naot #8 108.95 594,534 786 146.34 109.16—109.81
Java naot   Empty  
reverse-complement
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Go #2 2.22 822,211 614 4.79 2.34—2.39
Go #3 2.50 821,985 609 4.88 2.62—2.66
Go #6 1.93 1,277,608 1340 4.77 3.46—3.52
Java naot #6 3.87 2,049,520 760 96.54 4.59
Java naot #5 5.78 781,451 1115 95.90 5.78
Java naot #4 6.37 1,554,502 656 96.72 6.38
Java naot #3   Bad Output  
Java naot #7   Bad Output  
Go #5   Bad Output  
Go   Empty  
binary-trees
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Java naot #3 4.84 296,223 546 95.62 4.86—4.94
Java naot #6 5.05 294,187 535 96.50 5.09—5.17
Java naot #2 5.12 286,675 558 96.82 5.16—5.26
Java naot #4 5.55 305,353 846 95.40 5.54—5.72
Java naot #7 3.94 337,699 841 101.24 7.30—7.49
Java naot #8 7.75 291,021 596 100.20 7.77—7.81
Go #6 27.93 416,195 618 5.43 29.32—29.66
Go #2 14.21 635,613 672 5.41 56.45—56.55
Go #3 14.90 329,499 806 5.29 57.97—58.17
Go #5 14.68 386,056 957 5.41 57.76—58.07
Go 32.05 243,114 488 5.21 59.81—60.00
Go #7 32.57 241,345 531 5.30 61.40—61.53
pidigits
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
* Go #4 0.82 6,402 689 8.17 0.84
Go 1.15 7,533 715 11.71 1.22—1.31
* Go #3 1.17 6,885 610 8.50 1.35—1.49
Go #2 1.76 7,823 740 7.70 1.90—2.03
Go #6 2.47 10,703 727 5.59 2.48
Go #7 5.00 10,527 702 6.17 5.65
Java naot 8.42 62,415 807 96.29 8.45
Java naot #2   Empty  
Java naot #3   Empty  
regex-redux
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Go #5 3.23 297,800 817 8.13 5.40—5.44
Java naot 11.28 271,626 875 105.78 20.64—20.75
Java naot #6 7.56 456,479 746 102.10 20.98—21.02
Java naot #3 7.47 368,591 935 101.59 21.06—21.12
Go #4 14.49 349,008 832 8.44 35.20—35.71
Go #3 25.15 336,585 836 5.60 61.72—63.46
Go 25.79 301,662 749 5.85 61.91—62.99
Java naot #2   Empty  
Go

go version go1.23.1 linux/amd64
GOAMD64=v2

Java naot

native-image 23.0.2 2025-01-21
GraalVM Runtime Environment
Oracle GraalVM 23.0.2+7.1