Kotlin VS C# benchmarks

Current benchmark data was generated on Wed May 25 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -m in a file name stands for multi-threading or multi-processing

* -i in a file name stands for direct intrinsics usage. (Usage of simd intrinsics via libraries is not counted)

* -ffi in a file name stands for non-stdlib FFI usage

* (You may find time < time(user) + time(sys) for some non-parallelized programs, the overhead is from GC or JIT compiler, which are allowed to take advantage of multi-cores as that's more close to real-world scenarios.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 712ms 0.5ms 307.9MB 740ms 87ms kotlin/jvm 17.0.2
csharp 1.cs 1595ms 35ms 305.1MB 1500ms 147ms dotnet 6.0.300
csharp 1.cs 2472ms 34ms 107.8MB 2887ms 257ms mono 6.12.0
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 137ms 1.9ms 109.6MB 113ms 33ms kotlin/jvm 17.0.2
csharp 1.cs 164ms 1.0ms 44.7MB 137ms 13ms mono 6.12.0
csharp 1.cs 193ms 1.5ms 77.6MB 143ms 23ms dotnet 6.0.300
kotlin 1.kt 380ms 1.3ms 62.1MB 350ms 13ms kotlin/native 1.6.21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2-m.kt 3070ms 596ms 182.5MB 5807ms 87ms kotlin/jvm 17.0.2
kotlin 1.kt 3092ms 4.3ms 170.9MB 3890ms 70ms kotlin/jvm 17.0.2
csharp 1-m.cs 4737ms 96ms 89.8MB 8880ms 67ms dotnet 6.0.300
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21
kotlin 2-m.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1-m.cs 429ms 21ms 78.6MB 657ms 47ms dotnet 6.0.300
kotlin 1-m.kt 706ms 27ms 93.2MB 1247ms 43ms kotlin/jvm 17.0.2
kotlin 2-m.kt 976ms 5.7ms 68.2MB 1703ms 33ms kotlin/native 1.6.21
kotlin 2-m.kt 1003ms 75ms 105.5MB 1820ms 40ms kotlin/jvm 17.0.2
kotlin 1.kt 1172ms 4.8ms 48.7MB 1147ms 10ms kotlin/native 1.6.21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 2.6ms 0.9ms 1.2MB 0ms 0ms kotlin/native 1.6.21
csharp 1.cs 22ms 0.9ms 25.8MB 10ms 0ms mono 6.12.0
csharp 1.cs 52ms 6.4ms 29.0MB 20ms 4ms dotnet 6.0.300
kotlin 1.kt 73ms 2.6ms 41.1MB 52ms 12ms kotlin/jvm 17.0.2

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2-http2.cs 665ms 24ms 113.5MB 733ms 93ms dotnet 6.0.300
csharp 2.cs 904ms 35ms 153.5MB 847ms 430ms dotnet 6.0.300
csharp 1-m.cs 937ms 49ms 171.9MB 943ms 470ms dotnet 6.0.300
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/jvm 17.0.2
kotlin 2.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/jvm 17.0.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 483ms 5.6ms 80.8MB 397ms 110ms dotnet 6.0.300
csharp 1.cs 503ms 19ms 91.9MB 490ms 127ms dotnet 6.0.300
csharp 2-http2.cs 519ms 15ms 83.2MB 510ms 60ms dotnet 6.0.300
kotlin 2-m.kt 2250ms 240ms 237.8MB 3337ms 303ms kotlin/jvm 17.0.2
kotlin 1-m.kt 2284ms 167ms 236.0MB 3647ms 287ms kotlin/jvm 17.0.2

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 337ms 24ms 69.7MB 293ms 27ms dotnet 6.0.300
csharp 1.cs 542ms 2.6ms 147.1MB 487ms 73ms dotnet 6.0.300
kotlin 1-m.kt 1042ms 27ms 215.1MB 1737ms 83ms kotlin/jvm 17.0.2

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 1989ms 91ms 275.2MB 2103ms 107ms dotnet 6.0.300
csharp 1.cs 3179ms 46ms 799.4MB 3127ms 390ms dotnet 6.0.300
kotlin 1.kt 4142ms 313ms 954.1MB 5743ms 387ms kotlin/jvm 17.0.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 197ms 1.2ms 27.4MB 183ms 0ms mono 6.12.0
csharp 2.cs 210ms 0.9ms 27.7MB 173ms 0ms dotnet 6.0.300
kotlin 2-m.kt 243ms 1.3ms 112.3MB 323ms 47ms kotlin/jvm 17.0.2
kotlin 1.kt 256ms 2.6ms 109.7MB 307ms 33ms kotlin/jvm 17.0.2
kotlin 2.kt 395ms 25ms 92.1MB 363ms 13ms kotlin/native 1.6.21
csharp 1.cs 1575ms 7.0ms 75.7MB 1540ms 20ms dotnet 6.0.300
csharp 1.cs 3411ms 3.0ms 47.7MB 3360ms 43ms mono 6.12.0
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2.kt 417ms 7.8ms 127.4MB 510ms 47ms kotlin/jvm 17.0.2
csharp 2.cs 464ms 4.2ms 28.0MB 437ms 7ms dotnet 6.0.300
kotlin 1.kt 484ms 10.0ms 138.4MB 517ms 53ms kotlin/jvm 17.0.2
csharp 2.cs 526ms 3.2ms 26.0MB 510ms 0ms mono 6.12.0
kotlin 2.kt 1335ms 16ms 150.2MB 1290ms 30ms kotlin/native 1.6.21
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms dotnet 6.0.300
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms mono 6.12.0
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 112ms 0.8ms 27.2MB 97ms 0ms mono 6.12.0
csharp 2.cs 132ms 3.8ms 25.9MB 97ms 7ms dotnet 6.0.300
kotlin 1.kt 184ms 1.5ms 74.1MB 240ms 27ms kotlin/jvm 17.0.2
kotlin 2.kt 192ms 3.8ms 42.1MB 167ms 10ms kotlin/native 1.6.21
kotlin 2-m.kt 199ms 1.9ms 78.8MB 280ms 30ms kotlin/jvm 17.0.2
csharp 1.cs 4345ms 104ms 62.0MB 4307ms 27ms dotnet 6.0.300
csharp 1.cs 4416ms 309ms 32.3MB 4393ms 10ms mono 6.12.0
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 538ms 9.7ms 363.9MB 503ms 113ms kotlin/jvm 17.0.2
csharp 2.cs 1061ms 2.4ms 388.0MB 937ms 167ms dotnet 6.0.300
csharp 1.cs 1098ms 27ms 305.2MB 957ms 170ms dotnet 6.0.300
csharp 1.cs 1920ms 11ms 147.1MB 2480ms 123ms mono 6.12.0
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 203ms 1.8ms 221.2MB 180ms 57ms kotlin/jvm 17.0.2
csharp 2.cs 308ms 5.3ms 135.0MB 213ms 70ms dotnet 6.0.300
csharp 1.cs 323ms 1.1ms 164.5MB 227ms 80ms dotnet 6.0.300
csharp 1.cs 346ms 0.7ms 74.4MB 317ms 47ms mono 6.12.0
kotlin 1.kt 689ms 9.9ms 74.3MB 657ms 10ms kotlin/native 1.6.21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 9.cs 443ms 4.3ms 31.2MB 410ms 3ms dotnet 6.0.300
csharp 8.cs 618ms 8.4ms 27.2MB 583ms 7ms dotnet 6.0.300
kotlin 1.kt 633ms 16ms 43.1MB 647ms 10ms kotlin/jvm 17.0.2
kotlin 1n.kt 705ms 4.2ms 1.1MB 693ms 0ms kotlin/native 1.6.21
csharp 8.cs 1298ms 29ms 25.0MB 1280ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 73ms 1.5ms 1.1MB 67ms 0ms kotlin/native 1.6.21
csharp 9.cs 96ms 3.5ms 27.2MB 60ms 0ms dotnet 6.0.300
csharp 8.cs 112ms 7.1ms 29.1MB 83ms 0ms dotnet 6.0.300
csharp 8.cs 147ms 9.2ms 25.0MB 133ms 0ms mono 6.12.0
kotlin 1.kt 149ms 1.4ms 43.2MB 160ms 17ms kotlin/jvm 17.0.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms dotnet 6.0.300
kotlin 1.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21
kotlin 2n.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 1348ms 3.0ms 79.6MB 1333ms 43ms dotnet 6.0.300
kotlin 1.kt 1560ms 32ms 249.6MB 1917ms 100ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21
kotlin 2n.kt timeout 0.0ms 0.0MB 0ms 0ms kotlin/native 1.6.21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 4437ms 132ms 187.6MB 5327ms 63ms kotlin/jvm 17.0.2
csharp 1.cs 4641ms 242ms 79.1MB 4623ms 33ms dotnet 6.0.300

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 1157ms 36ms 75.0MB 1140ms 23ms dotnet 6.0.300
kotlin 1-m.kt 1370ms 11ms 193.2MB 2130ms 77ms kotlin/jvm 17.0.2