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 flagged * possible hand-written vector instructions or "unsafe" or naked ffi, 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 cpu secs mem gz make
Go #3 8.36 33.35 3,846 975 5.31
Java naot #3 34.41 34.41 17,514 1264 98.17
Java naot 9.26 36.60 18,522 1289 96.54
Go #8 46.15 46.26—46.33 3,207 500 5.43
Java naot #2 46.96 46.96 16,175 520 95.31
Go 12.27 49.09 4,903 906 5.41
Go #2 12.36 49.40 16,966 903 5.43
Java naot #8 51.93 51.94—51.98 16,269 517 93.86
n-body      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Java naot #4 6.02 6.01—6.09 20,296 1495 145.73
Go #3 6.39 6.41 3,191 1207 5.43
Java naot #2 6.77 6.77 19,952 1430 144.22
Java naot #3 6.77 6.75—6.83 19,923 1436 143.42
Go 7.02 7.09—7.27 3,228 1316 5.36
Go #2 7.04 7.06 3,203 1222 5.35
Java naot #5 7.23 7.21—7.27 19,972 1435 146.75
Java naot 7.26 7.25—7.29 24,383 1437 148.73
Java naot #8 7.30 7.29—7.33 19,862 1322 145.10
Go #8 9.60 9.64 3,191 1224 5.47
spectral-norm      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Java naot #8 5.35 5.35 20,886 453 146.59
Java naot 5.36 5.35 25,215 521 146.57
Go #8 5.34 5.36 3,838 429 5.35
Go 5.34 5.36 4,059 417 5.35
Go #4 1.43 5.69 4,174 555 5.45
Go #2 1.51 5.70 4,317 674 5.56
Java naot #2 1.47 5.71 26,616 956 142.41
Java naot #3 1.47 5.72 29,483 762 144.71
mandelbrot      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Go #4 3.77 15.02 37,970 912 5.49
Go #3 3.78 15.03 38,101 900 5.82
Java naot #6 3.96 15.67 58,348 808 97.90
Java naot #4 4.27 15.76 82,633 667 96.47
Java naot #2 4.01 15.87 58,278 802 96.26
Go 5.04 20.05 35,787 829 5.40
Go #8 26.70 26.77 3,199 500 5.39
Go #2 6.87 27.32 35,549 843 5.69
Go #6 6.91 27.48 35,119 707 5.69
Java naot #8 28.57 28.53—28.69 16,392 441 95.54
Java naot 30.59 30.44—30.97 19,927 671 146.91
Java naot #3 7.80 31.00 63,054 910 145.66
fasta      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Java naot #6 1.11 3.19 23,798 2549 95.92
Java naot #4 3.26 3.26 16,400 1528 95.52
Go 3.74 3.76 3,207 1055 5.36
Java naot #5 1.13 3.80 24,113 2478 95.50
Go #2 1.27 4.08 12,644 1405 5.51
Go #3 1.52 4.10 5,095 1362 5.29
Java naot #2 5.69 5.70 16,146 1259 97.56
Java naot #8 10.45 10.48—10.54 103,199 894 93.89
Go #8 11.22 11.54—11.80 9,052 880 5.55
k-nucleotide      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Java naot 6.25 20.46—20.50 366,531 1821 150.33
Java naot #3 8.31 28.22—28.29 363,635 1642 150.99
Java naot #6 8.35 28.25—28.30 397,414 1614 150.20
Go #7 7.58 28.83—29.08 168,186 1613 5.42
Go #3 8.20 29.98—30.69 150,413 1729 5.63
Go #6 8.30 30.22—30.75 150,442 1596 5.79
Go #4 9.27 32.00—35.21 144,650 1552 5.11
Java naot #4 36.76 36.75—38.47 183,878 1887 150.92
Java naot #5 22.53 51.46—52.54 203,649 2225 152.81
Go #8 61.38 62.37—62.83 558,379 752 5.20
Java naot #8 85.57 87.80—89.42 1,782,706 786 149.27
reverse-complement      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Go #2 2.22 2.34—2.39 822,211 614 4.79
Go #3 2.50 2.62—2.66 821,985 609 4.88
Go #6 1.93 3.46—3.52 1,277,608 1340 4.77
Java naot #6 4.05 4.72—4.77 2,063,376 760 94.05
Java naot #5 6.03 6.05 1,100,202 1115 95.80
Java naot #4 6.75 6.76 1,914,102 656 95.45
Java naot #3   Bad Output  
Java naot #7   Bad Output  
Go #5   Bad Output  
Go   Empty  
binary-trees      [ Contentious. Different approaches. ]
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Java naot #3 4.85 4.85—4.91 290,574 546 96.06
Java naot #6 5.12 5.13—5.17 299,389 535 97.18
Java naot #2 5.15 5.17—5.27 299,610 558 96.54
Java naot #4 5.54 5.54—5.76 305,373 846 95.54
Java naot #7 3.90 7.33—7.53 338,911 841 95.08
Java naot #8 7.74 7.74—7.78 291,344 596 100.38
Go #6 27.93 29.32—29.66 416,195 618 5.43
Go #2 14.21 56.45—56.55 635,613 672 5.41
Go #3 14.90 57.97—58.17 329,499 806 5.29
Go #5 14.68 57.76—58.07 386,056 957 5.41
Go 32.05 59.81—60.00 243,114 488 5.21
Go #7 32.57 61.40—61.53 241,345 531 5.30
pidigits      [ Contentious. Different libraries. ]
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
* Go #4 0.82 0.84 6,402 689 8.17
Go 1.15 1.22—1.31 7,533 715 11.71
* Go #3 1.17 1.35—1.49 6,885 610 8.50
Go #2 1.76 1.90—2.03 7,823 740 7.70
Go #6 2.47 2.48 10,703 727 5.59
Go #7 5.00 5.65 10,527 702 6.17
Java naot #5 8.09 8.12—8.18 230,797 925 167.91
Java naot 8.86 8.91 304,071 807 100.74
Java naot #2   Empty  
Java naot #4   Empty  
Java naot #3   Empty  
regex-redux      [ Contentious. Different libraries. ]
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Java naot #4 1.38 3.98 554,586 2441 167.77
Go #5 3.23 5.40—5.44 297,800 817 8.13
Java naot 11.36 20.96—21.08 280,367 875 101.78
Java naot #6 7.66 21.95—21.99 392,942 746 101.47
Java naot #3 7.63 22.03—22.08 383,447 935 102.19
Go #4 14.49 35.20—35.71 349,008 832 8.44
Go #3 25.15 61.72—63.46 336,585 836 5.60
Go 25.79 61.91—62.99 301,662 749 5.85
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