The Computer Language
24.04 Benchmarks Game

C# .NET versus C# aot 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
C# aot #8 2.13 19,644 1485 8.44
C# .NET #8 2.24 31,032 1485 8.62
C# .NET #2 29.55 30,632 584 29.53
C# aot #2 31.96 19,644 584 31.96
C# aot #9 8.53 19,644 1232 33.99
C# .NET #6 8.66 30,828 1075 34.31
C# .NET #9 9.07 31,908 1232 35.94
C# aot #6 9.07 19,644 1075 36.22
C# .NET #3 11.42 30,848 1117 44.84
C# aot #3 11.43 19,772 1117 45.30
C# aot #7   Bad Output  
C# .NET #7   Bad Output  
n-body
source secs mem gz cpu secs
C# aot #9 3.08 19,684 2480 3.09
C# .NET #9 3.16 29,972 2480 3.15
C# aot #4 3.74 19,684 2137 3.75
C# .NET #4 3.78 30,096 2137 3.77
C# aot #7 4.73 19,684 1715 4.74
C# aot #6 4.75 19,684 1754 4.76
C# .NET #7 4.80 30,216 1715 4.78
C# .NET #6 4.82 30,324 1754 4.81
C# .NET #3 6.64 31,228 1311 6.63
C# aot #3 6.68 19,676 1311 6.69
C# .NET #2 6.83 31,272 1350 6.81
C# .NET #8 6.83 31,272 1339 6.81
C# aot #2 6.96 19,676 1350 6.97
C# aot #8 6.96 19,684 1339 6.97
C# aot 7.57 19,684 1424 7.58
C# .NET 7.79 31,348 1424 7.78
spectral-norm
source secs mem gz cpu secs
C# aot #5 0.75 19,692 776 2.89
C# .NET #5 0.95 35,932 776 3.34
C# aot 5.32 19,692 480 5.33
C# .NET 5.40 31,236 480 5.38
C# aot #2 1.45 19,692 1084 5.69
C# aot #3 1.49 19,820 890 5.78
C# .NET #3 1.56 33,444 890 5.85
C# .NET #2   Failed  
mandelbrot
source secs mem gz cpu secs
C# aot 3.05 42,496 1980 12.13
C# aot #9 3.06 42,496 822 12.14
C# .NET 3.22 66,640 1980 12.55
C# .NET #9 3.22 66,616 822 12.56
C# .NET #5 4.04 64,300 851 15.77
C# aot #5 3.99 43,520 851 15.82
C# aot #3 6.66 44,544 722 26.48
C# .NET #3 6.79 64,636 722 26.76
C# aot #2 45.02 19,668 504 45.03
C# .NET #2 46.04 31,568 504 46.01
pidigits
source secs mem gz cpu secs
C# aot #6 0.88 19,684 1182 0.89
C# .NET #6 0.97 32,904 1182 0.95
C# .NET #5 0.93 34,944 990 0.95
C# .NET #4 1.37 33,536 1135 1.35
C# aot #4 5.42 19,684 1135 5.42
C# aot #7 6.27 29,000 579 6.70
C# .NET #7 6.49 53,020 579 7.05
C# aot #5 120.44 19,684 990 120.43
regex-redux
source secs mem gz cpu secs
C# aot #8 1.33 365,284 1881 2.54
C# .NET #8 1.38 388,784 1881 2.62
C# .NET 4.58 847,208 641 4.81
C# .NET #5 1.96 860,260 679 5.97
C# aot 12.25 817,408 641 12.27
C# aot #5 3.94 830,592 679 13.15
C# aot #4 9.00 929,024 854 31.24
C# .NET #4 12.97 960,888 854 44.30
fasta
source secs mem gz cpu secs
C# aot #5 1.11 85,248 1702 4.21
C# aot 1.54 29,312 2113 5.40
C# .NET #5 1.49 51,828 1702 5.46
C# .NET 1.87 52,604 2113 6.59
k-nucleotide
source secs mem gz cpu secs
C# .NET 3.02 184,620 2046 10.45
C# aot 3.07 160,512 2046 10.91
C# .NET #6 4.98 188,080 1615 12.69
C# aot #6 5.20 162,984 1615 13.46
C# .NET #7 40.57 761,912 1449 41.01
C# .NET #4 11.52 775,588 1725 41.26
C# aot #4 11.60 751,320 1725 42.53
C# aot #7 42.18 737,968 1449 42.55
reverse-complement
source secs mem gz cpu secs
C# .NET #8 0.56 730,092 2641 1.32
C# .NET 2.97 798,068 1130 3.12
C# .NET #5 2.63 1,026,424 1620 3.63
C# aot #7 1.33 903,936 1312 3.65
C# aot 3.52 777,780 1130 3.68
C# .NET #6 1.60 1,027,884 1627 3.85
C# aot #6 1.64 1,006,336 1627 4.00
C# .NET #7 1.55 935,720 1312 4.20
C# aot #5 2.92 1,003,392 1620 4.57
C# .NET #3 7.24 1,572,432 934 11.37
C# aot #3 8.15 1,549,436 934 12.24
C# aot #8   Bad Output  
binary-trees
source secs mem gz cpu secs
C# .NET #7 4.57 1,676,420 706 14.45
C# aot #7 4.47 1,542,820 706 14.50
C# aot #3 4.41 1,944,060 688 14.52
C# aot #2 4.55 1,672,396 717 14.53
C# aot 4.60 1,802,196 668 15.29
C# .NET #2 4.83 1,577,904 717 15.52
C# .NET #3 4.91 1,972,604 688 15.69
C# .NET 5.14 2,050,380 668 16.24
C# .NET

.NET SDK 8.0.204
Host Version: 8.0.4
Commit: 2d7eea2529
<AllowUnsafeBlocks>true
<ServerGarbageCollection>true
<ConcurrentGarbageCollection>true
<PublishAot>false
<OptimizationPreference>Speed
<IlcInstructionSet>native

C# aot

.NET SDK 8.0.204
Host Version: 8.0.4
Commit: 2d7eea2529
<AllowUnsafeBlocks>true
<ServerGarbageCollection>true
<ConcurrentGarbageCollection>true
<PublishAot>true
<OptimizationPreference>Speed
<IlcInstructionSet>native