The Computer Language
24.09 Benchmarks Game

OCaml versus F# .NET fastest performance

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
source secs mem gz cpu secs
F# .NET #6 8.38 31,568 1103 32.60
OCaml #3 8.80 19,676 1024 35.18
OCaml #4 9.13 19,676 1018 36.46
F# .NET #5 9.75 36,612 927 38.38
OCaml #2 45.76 19,676 478 45.76
OCaml 51.25 19,676 529 51.25
F# .NET 93.67 49,764 558 99.25
n-body
source secs mem gz cpu secs
F# .NET #6 4.97 33,856 1395 4.96
F# .NET #5 5.74 33,780 1363 5.73
F# .NET #4 6.89 33,992 1296 6.88
F# .NET #3 6.92 32,372 1624 6.91
OCaml 6.94 19,676 1255 6.94
F# .NET #2 7.42 34,040 1387 7.41
F# .NET 7.77 49,464 1272 7.83
spectral-norm
source secs mem gz cpu secs
OCaml #2 5.32 19,676 383 5.32
F# .NET #4 1.61 36,480 738 6.03
F# .NET #2   Timed Out  
mandelbrot
source secs mem gz cpu secs
F# .NET #2 7.11 39,084 1054 28.01
OCaml #6 28.76 19,676 450 28.76
OCaml 7.59 19,676 723 30.20
F# .NET #5   Make Error  
F# .NET   Make Error  
F# .NET #6   Make Error  
pidigits
source secs mem gz cpu secs
F# .NET #6 0.96 31,680 917 0.95
F# .NET #4 1.34 33,524 887 1.37
OCaml #5 2.75 19,676 465 2.75
OCaml #7   Make Error  
regex-redux
source secs mem gz cpu secs
OCaml #3 2.20 451,620 653 3.35
F# .NET #2 4.64 852,224 437 4.89
F# .NET #6 1.86 860,664 622 5.47
F# .NET #7 4.63 1,398,348 610 6.51
OCaml #2 13.99 922,636 644 13.99
F# .NET   Bad Output  
F# .NET #4   Bad Output  
fasta
source secs mem gz cpu secs
OCaml #6 3.36 201,984 1194 3.36
F# .NET #3 1.13 72,912 1361 4.17
OCaml #3 4.71 19,676 1075 4.71
F# .NET #4 1.29 101,008 1355 4.87
k-nucleotide
source secs mem gz cpu secs
F# .NET #6 3.89 187,008 1913 12.37
F# .NET #5 4.91 199,168 1964 16.86
F# .NET #2 4.88 199,280 1932 17.00
F# .NET #3 11.96 1,323,896 1124 25.77
F# .NET #4 10.34 1,321,532 1522 26.40
OCaml #3 16.29 258,556 1839 43.41
OCaml 45.59 338,436 894 45.59
OCaml #2 27.45 314,312 1247 61.90
F# .NET 26.43 1,068,296 713 86.77
reverse-complement
source secs mem gz cpu secs
OCaml 2.25 19,676 1372 5.09
OCaml #3 2.28 19,676 1361 5.77
OCaml #2 9.27 909,056 426 9.27
F# .NET 36.47 1,960,916 603 37.87
F# .NET #4   Timed Out  
F# .NET #5   Timed Out  
binary-trees
source secs mem gz cpu secs
OCaml #5 7.80 221,952 468 7.80
OCaml #2 3.59 216,628 759 10.35
F# .NET 10.44 1,248,320 517 12.58
F# .NET #7 5.32 1,742,212 527 16.10
OCaml

OCaml native-code
5.4.0+dev0-2024-08-25

F# .NET

.NET SDK 8.0.301
Host Version: 8.0.6
Commit: 3b8b000a0e
<ServerGarbageCollection>true
F# 8.0