The Computer Language
25.02 Benchmarks Game

Julia versus Classic Fortran

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
* Julia #2 8.59 333,136 1077 0.12 31.99
* Julia #3 9.44 333,103 896 0.12 35.60—35.68
Classic Fortran 39.02 3,191 608 2.95 38.97—39.21
Classic Fortran #3 10.15 12,329 1164 3.36 40.49
Julia 42.56 309,703 441 0.10 42.61
n-body
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Julia #5 3.80 345,936 1129 0.11 3.84—3.96
Classic Fortran #6 4.22 2,146 1530 2.93 4.23
Classic Fortran #2 5.39 2,146 1507 2.88 5.39
Classic Fortran 5.45 2,142 1400 3.14 5.45
Classic Fortran #5 5.97 2,150 1669 3.04 5.99—6.10
Classic Fortran #4 6.18 2,146 1183 2.96 6.23
Classic Fortran #3 6.33 2,146 1311 3.03 6.36—6.40
Julia #4 7.17 415,039 1168 0.13 7.23
Julia #3 8.05 415,158 1548 0.11 8.10—8.14
Julia #2 28.79 415,015 1084 0.09 29.10—29.76
spectral-norm
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Classic Fortran #2 2.68 4,239 520 3.16 2.67
Classic Fortran #3 0.72 5,259 644 3.06 2.86—2.91
Julia #4 1.30 315,802 435 0.14 3.72
Julia #2 2.83 414,999 377 0.09 5.80—5.84
mandelbrot
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Julia #7 1.53 357,155 629 0.10 4.86
Julia #2 1.56 356,286 634 0.12 4.96
Julia #3 1.61 376,521 589 0.13 5.16—5.20
Julia #4 2.07 368,177 583 0.12 5.19
Classic Fortran #7 1.44 79,483 965 2.98 5.64
Julia #5 1.76 381,854 580 0.12 5.84
Julia #6 2.25 368,796 571 0.08 5.88
Classic Fortran #6 3.27 79,585 669 2.68 10.80
Julia 26.66 339,251 379 0.09 26.72
Classic Fortran #4 10.40 79,577 626 2.70 26.84—26.88
Classic Fortran #5 45.35 45,691 528 2.56 45.36—45.41
fasta
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Julia #2 1.28 317,960 1094 0.06 1.32
Classic Fortran #4 2.06 2,142 1355 3.21 2.06
Julia #5 2.67 334,729 957 0.12 2.72
Julia #4 2.73 320,463 1053 0.12 2.77
* Julia #7 1.98 405,914 1189 0.10 4.86—5.21
* Julia #6 2.25 391,623 1213 0.13 4.70—4.91
Classic Fortran #3 6.98 2,146 1217 2.98 7.05—7.16
Classic Fortran 7.19 2,142 1193 2.78 7.23—7.31
Julia #3 11.67 318,525 901 0.10 11.72—11.76
k-nucleotide
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Julia #6 6.82 524,403 965 0.08 14.29—14.70
Julia #7 9.91 576,082 1379 0.10 24.02—24.48
Julia 132.16 1,696,596 703 0.13 133.46—134.30
Classic Fortran   Empty  
reverse-complement
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Julia #7 1.75 1,128,034 531 0.12 1.83
Julia #9 2.08 1,330,057 456 0.12 2.17
Classic Fortran 4.24 1,012,376 1026 2.89 4.25
Julia #2 29.38 2,259,771 464 0.13 29.83—30.87
Classic Fortran #2 45.32 790,282 778 3.25 45.50—45.79
binary-trees
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
Classic Fortran #2 2.22 141,066 1155 2.78 6.99—7.03
Julia #2 12.60 552,776 430 0.11 13.45—14.61
Julia #4 14.42 551,617 378 0.07 15.81—15.87
Julia #3 7.34 569,876 640 0.12 19.54—21.11
Classic Fortran 32.31 540,062 780 2.66 32.35—32.48
Julia #5 22.15 1,392,615 396 0.08 60.91—62.04
pidigits
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
* Classic Fortran #4 0.74 5,399 987 2.35 0.74
* Julia #3 1.13 307,601 512 0.12 1.24
* Julia #2 1.24 315,621 686 0.13 1.31
Julia #4 3.76 414,806 531 0.11 3.86—3.92
regex-redux
  elapsed       Mean or 95% CI
source secs mem gz make cpu secs
* Classic Fortran 0.98 179,618 2229 3.02 3.11—3.15
* Julia #5 1.91 519,856 766 0.12 3.18
* Julia #4 2.00 522,338 772 0.09 3.26—3.33
* Julia #3 2.18 671,347 630 0.12 3.58
Julia 5.19 714,330 414 0.11 5.26—5.35
Julia

julia version 1.11.1

Classic Fortran

Fortran Compiler Classic
2021.12.0 20240222