The Computer Language
25.03 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.60 31.98—32.02 333,173 1077 0.11
* Julia #3 9.44 35.58—35.64 333,042 896 0.14
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.57 42.62 309,928 441 0.13
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.83—4.13 345,874 1129 0.14
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.19 7.26 414,929 1168 0.15
Julia #3 8.07 8.11—8.17 415,089 1548 0.13
Julia #2 28.68 28.88—29.15 414,970 1084 0.11
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.31 3.73 315,896 435 0.09
Julia #2 2.84 5.81—5.85 414,818 377 0.14
mandelbrot      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #7 1.54 4.86 357,138 629 0.12
Julia #2 1.57 4.96 355,762 634 0.10
Julia #3 1.61 5.18 376,463 589 0.11
Julia #4 2.07 5.19 368,173 583 0.14
Julia #5 1.76 5.85 381,813 580 0.12
Julia #6 2.25 5.89 368,599 571 0.13
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.71 339,132 379 0.11
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 318,083 1094 0.11
Intel Fortran #4 1.36 1.37 2,142 1355 4.44
Julia #5 2.68 2.72 334,770 957 0.10
Julia #4 2.73 2.77 320,528 1053 0.13
* Julia #7 1.98 4.93—5.22 403,165 1189 0.12
* Julia #6 2.26 4.77—4.97 415,330 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.71 11.76—11.82 318,497 901 0.13
k-nucleotide      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #6 6.98 14.54—14.97 524,595 965 0.12
Julia #7 9.93 23.91—24.31 575,861 1379 0.07
Julia 132.79 134.30—135.03 1,696,670 703 0.10
Intel Fortran   Empty  
reverse-complement      
  elapsed Mean or 95% CI      
source secs cpu secs mem gz make
Julia #7 1.79 1.87 1,128,022 531 0.13
Julia #9 2.12 2.20 1,330,082 456 0.11
Intel Fortran 3.35 3.36 1,012,519 1026 4.53
Julia #2 29.48 29.90—30.70 2,259,153 464 0.12
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.65 13.47—14.55 552,669 430 0.13
Julia #4 14.42 15.81—15.94 550,064 378 0.08
Julia #3 7.40 19.30—20.35 564,216 640 0.14
Intel Fortran 32.74 32.78—32.88 540,066 780 3.98
Julia #5 21.83 61.11—62.09 1,336,107 396 0.13
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.14 1.24 307,749 512 0.10
* Julia #2 1.25 1.31 315,859 686 0.15
Julia #4 3.80 3.88—3.92 414,781 531 0.14
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.19 519,877 766 0.16
* Julia #4 2.00 3.29 522,019 772 0.15
* Julia #3 2.19 3.54—3.76 671,166 630 0.12
Julia 5.19 5.26—5.31 714,248 414 0.11
Julia

julia version 1.11.1

Intel Fortran

ifx (IFX)
2024.1.0 20240308