The Computer Language
24.04 Benchmarks Game

F# .NET versus OCaml 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,256 1103 32.53
OCaml #3 8.94 19,796 1024 35.72
OCaml #4 8.93 19,796 1018 35.73
F# .NET #5 9.85 36,736 927 38.38
OCaml #2 46.91 19,668 478 46.91
OCaml 51.57 19,668 529 51.57
F# .NET 91.67 50,008 558 96.00
n-body
source secs mem gz cpu secs
F# .NET #6 4.98 34,028 1395 4.95
F# .NET #5 5.02 34,036 1363 5.00
OCaml 6.83 19,688 1255 6.83
F# .NET #4 6.88 34,396 1296 6.87
F# .NET #3 6.91 32,128 1624 6.89
F# .NET #2 7.39 34,268 1387 7.37
F# .NET 7.74 49,688 1272 7.79
spectral-norm
source secs mem gz cpu secs
OCaml #2 5.31 19,688 383 5.31
F# .NET #4 1.60 36,320 738 6.00
F# .NET #2   Timed Out  
mandelbrot
source secs mem gz cpu secs
F# .NET #2 7.10 37,972 1054 27.95
OCaml #6 28.68 19,688 450 28.68
OCaml 7.55 19,812 723 30.02
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.95 31,608 917 0.95
F# .NET #4 1.36 33,408 887 1.37
OCaml #5 2.86 19,508 465 2.86
OCaml #7   Make Error  
regex-redux
source secs mem gz cpu secs
F# .NET #2 4.61 852,528 437 4.84
F# .NET #6 1.76 860,688 622 5.17
F# .NET #7 4.52 1,399,680 610 6.38
OCaml #2 13.51 922,760 644 13.51
F# .NET   Bad Output  
F# .NET #4   Bad Output  
OCaml #3   Make Error  
fasta
source secs mem gz cpu secs
OCaml #6 3.36 201,856 1194 3.36
F# .NET #3 1.14 65,632 1361 4.09
F# .NET #4 1.24 95,052 1355 4.61
OCaml #3 4.66 19,796 1075 4.66
k-nucleotide
source secs mem gz cpu secs
F# .NET #6 3.88 186,720 1913 12.22
F# .NET #2 4.84 199,004 1932 16.23
F# .NET #5 4.77 199,008 1964 16.60
F# .NET #3 11.72 1,323,268 1124 25.39
F# .NET #4 10.51 1,321,116 1522 26.82
OCaml #3 15.81 258,380 1839 42.53
OCaml 43.82 338,264 894 43.81
OCaml #2 26.57 314,252 1247 60.40
F# .NET 24.14 1,073,324 713 86.18
reverse-complement
source secs mem gz cpu secs
OCaml 2.23 19,816 1372 5.42
OCaml #3 2.28 19,816 1361 6.06
OCaml #2 9.26 888,064 426 9.26
F# .NET 37.91 1,964,820 603 39.29
F# .NET #4   Timed Out  
F# .NET #5   Timed Out  
binary-trees
source secs mem gz cpu secs
OCaml #5 8.18 213,760 468 8.17
OCaml #2 3.42 217,384 759 9.63
F# .NET 10.43 1,266,620 517 12.47
F# .NET #7 5.35 1,656,124 527 15.77
F# .NET

.NET SDK 8.0.200
Host Version: 8.0.2
Commit: 1381d5ebd2
<ServerGarbageCollection>true
F# 8.0

OCaml

OCaml native-code
version 5.1.1