The Computer Language
25.02 Benchmarks Game

Julia versus Intel Fortran

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
* Julia #2 8.59 31.99 333,136 1077 0.12
* Julia #3 9.44 35.60—35.68 333,103 896 0.12
Intel Fortran #3 9.67 38.56 12,128 1164 5.02
Intel Fortran 40.21 40.21 2,179 608 3.95
Julia 42.56 42.61 309,703 441 0.10
n-body      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Intel Fortran #5 3.39 3.40 2,146 1669 4.48
Julia #5 3.80 3.84—3.96 345,936 1129 0.11
Intel Fortran #2 4.46 4.42—4.69 2,146 1507 4.33
Intel Fortran 4.55 4.55 2,142 1400 4.41
Intel Fortran #3 4.72 4.69—4.82 2,154 1311 4.43
Intel Fortran #6 4.99 4.64—6.08 2,052 1530 4.43
Julia #4 7.17 7.23 415,039 1168 0.13
Julia #3 8.05 8.10—8.14 415,158 1548 0.11
Julia #2 28.79 29.10—29.76 415,015 1084 0.09
Intel Fortran #4   Bad Output  
spectral-norm      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Intel Fortran #2 2.67 2.67 2,331 520 5.05
Intel Fortran #3 0.72 2.88—2.92 5,214 644 4.80
Julia #4 1.30 3.72 315,802 435 0.14
Julia #2 2.83 5.80—5.84 414,999 377 0.09
mandelbrot      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #7 1.53 4.86 357,155 629 0.10
Julia #2 1.56 4.96 356,286 634 0.12
Julia #3 1.61 5.16—5.20 376,521 589 0.13
Julia #4 2.07 5.19 368,177 583 0.12
Julia #5 1.76 5.84 381,854 580 0.12
Julia #6 2.25 5.88 368,796 571 0.08
Intel Fortran #6 2.72 8.55 85,975 669 4.13
Intel Fortran #7 4.09 16.19 85,639 965 5.17
Intel Fortran #4 9.89 25.29—25.33 86,360 626 3.95
Julia 26.66 26.72 339,251 379 0.09
Intel Fortran #5 32.66 32.67 47,174 528 3.72
fasta      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #2 1.28 1.32 317,960 1094 0.06
Intel Fortran #4 1.36 1.37 2,142 1355 4.44
Julia #5 2.67 2.72 334,729 957 0.12
Julia #4 2.73 2.77 320,463 1053 0.12
* Julia #7 1.98 4.86—5.21 405,914 1189 0.10
* Julia #6 2.25 4.70—4.91 391,623 1213 0.13
Intel Fortran 6.01 6.05—6.11 2,146 1193 4.34
Intel Fortran #3 6.53 6.57—6.65 2,142 1217 4.47
Julia #3 11.67 11.72—11.76 318,525 901 0.10
k-nucleotide      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #6 6.82 14.29—14.70 524,403 965 0.08
Julia #7 9.91 24.02—24.48 576,082 1379 0.10
Julia 132.16 133.46—134.30 1,696,596 703 0.13
Intel Fortran   Empty  
reverse-complement      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #7 1.75 1.83 1,128,034 531 0.12
Julia #9 2.08 2.17 1,330,057 456 0.12
Intel Fortran 3.35 3.36 1,012,519 1026 4.53
Julia #2 29.38 29.83—30.87 2,259,771 464 0.13
Intel Fortran #2 45.22 45.34—45.58 790,307 778 4.10
binary-trees      [ Contentious. Different approaches. ]
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Intel Fortran #2 2.24 6.89—7.00 148,124 1155 4.32
Julia #2 12.60 13.45—14.61 552,776 430 0.11
Julia #4 14.42 15.81—15.87 551,617 378 0.07
Julia #3 7.34 19.54—21.11 569,876 640 0.12
Intel Fortran 32.74 32.78—32.88 540,066 780 3.98
Julia #5 22.15 60.91—62.04 1,392,615 396 0.08
pidigits      [ Contentious. Different libraries. ]
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Intel Fortran #4 0.74 0.74 6,590 987 3.94
* Julia #3 1.13 1.24 307,601 512 0.12
* Julia #2 1.24 1.31 315,621 686 0.13
Julia #4 3.76 3.86—3.92 414,806 531 0.11
regex-redux      [ Contentious. Different libraries. ]
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Intel Fortran 0.98 3.11—3.15 189,305 2229 4.80
* Julia #5 1.91 3.18 519,856 766 0.12
* Julia #4 2.00 3.26—3.33 522,338 772 0.09
* Julia #3 2.18 3.58 671,347 630 0.12
Julia 5.19 5.26—5.35 714,330 414 0.11
Julia

julia version 1.11.1

Intel Fortran

ifx (IFX)
2024.1.0 20240308