Go VS D benchmarks

Current benchmark data was generated on Sun Jan 29 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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
d 1.d 3003ms 66ms 75.1MB 3223ms 10ms ldc2 1.30.0
go 1.go 3040ms 4.2ms 45.1MB 4367ms 53ms go 1.19.5
go 1.go 3913ms 11ms 39.6MB 3890ms 7ms tinygo 0.25.0
d 1.d 4406ms 497ms 154.2MB 4923ms 43ms dmd 2.101.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 262ms 5.5ms 15.1MB 253ms 0ms ldc2 1.30.0
go 1.go 274ms 7.4ms 8.2MB 337ms 7ms go 1.19.5
go 1.go 349ms 1.6ms 7.1MB 337ms 0ms tinygo 0.25.0
d 1.d 353ms 2.6ms 27.3MB 360ms 7ms dmd 2.101.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 736ms 89ms 13.6MB 1430ms 0ms go 1.19.5
go 1.go 1700ms 13ms 257.5MB 1640ms 40ms tinygo 0.25.0
d 1.d timeout 0.0ms 13.6MB 4983ms 0ms dmd 2.101.2
d 1.d timeout 0.0ms 14.3MB 4970ms 10ms ldc2 1.30.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 59ms 5.2ms 7.4MB 93ms 0ms go 1.19.5
go 1.go 270ms 1.1ms 66.3MB 250ms 3ms tinygo 0.25.0
d 1.d 1283ms 21ms 10.2MB 1263ms 3ms ldc2 1.30.0
d 1.d 1678ms 10ms 12.1MB 1660ms 7ms dmd 2.101.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 166ms 2.0ms 8.2MB 150ms 0ms go 1.19.5
d 1.d 3813ms 1.4ms 7.8MB 3797ms 0ms ldc2 1.30.0
d 1.d 4394ms 9.6ms 9.8MB 4383ms 0ms dmd 2.101.2

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 49ms 1.7ms 8.2MB 37ms 0ms go 1.19.5
d 1.d 651ms 0.2ms 7.0MB 637ms 0ms ldc2 1.30.0
d 1.d 794ms 0.1ms 8.8MB 780ms 0ms dmd 2.101.2

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 759ms 14ms 1.5MB 1430ms 0ms ldc2 1.30.0
go 3-m.go 1395ms 1.7ms 5.0MB 2700ms 7ms go 1.19.5
d 1-i.d 1456ms 6.1ms 1.5MB 1443ms 0ms ldc2 1.30.0
d 2-im.d 2543ms 27ms 1.6MB 4950ms 0ms ldc2 1.30.0
go 3.go 2942ms 4.0ms 49.9MB 2917ms 3ms tinygo 0.25.0
d 1.d 4446ms 7.7ms 1.6MB 4433ms 0ms ldc2 1.30.0
d 2-i.d 4876ms 1.4ms 1.5MB 4863ms 0ms ldc2 1.30.0
d 1.d 4922ms 0.8ms 2.9MB 4910ms 0ms dmd 2.101.2
d 1-i.d timeout 0.0ms 2.5MB 4987ms 0ms dmd 2.101.2
d 1-im.d timeout 0.0ms 4.6MB 9810ms 3ms dmd 2.101.2
d 2-i.d timeout 0.0ms 2.9MB 4990ms 0ms dmd 2.101.2
d 2-im.d timeout 0.0ms 4.7MB 9827ms 0ms dmd 2.101.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 71ms 0.1ms 1.5MB 117ms 0ms ldc2 1.30.0
d 1-i.d 124ms 1.0ms 1.5MB 110ms 0ms ldc2 1.30.0
go 3-m.go 144ms 2.6ms 5.0MB 220ms 0ms go 1.19.5
d 2-im.d 220ms 1.6ms 1.5MB 400ms 0ms ldc2 1.30.0
go 3.go 312ms 0.4ms 48.4MB 297ms 3ms tinygo 0.25.0
d 1.d 360ms 2.1ms 1.5MB 350ms 0ms ldc2 1.30.0
d 2-i.d 402ms 0.4ms 1.6MB 390ms 0ms ldc2 1.30.0
d 1.d 413ms 4.1ms 2.9MB 403ms 0ms dmd 2.101.2
d 1-im.d 461ms 6.2ms 4.6MB 877ms 0ms dmd 2.101.2
d 2-im.d 846ms 3.7ms 4.7MB 1610ms 0ms dmd 2.101.2
d 1-i.d 861ms 3.6ms 2.4MB 850ms 0ms dmd 2.101.2
d 2-i.d 1516ms 11ms 2.9MB 1503ms 0ms dmd 2.101.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 229ms 1.2ms 33.1MB 207ms 7ms ldc2 1.30.0
go 3-m.go 252ms 2.9ms 4.9MB 460ms 0ms go 1.19.5
d 1.d 775ms 0.2ms 39.2MB 757ms 3ms dmd 2.101.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 27ms 1.0ms 6.7MB 17ms 0ms ldc2 1.30.0
go 3.go 33ms 2.2ms 2.9MB 40ms 0ms go 1.19.5
d 1.d 81ms 0.5ms 12.6MB 70ms 0ms dmd 2.101.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 1.4ms 0.5ms 0.1MB 0ms 0ms tinygo 0.25.0
d 1.d 2.3ms 0.9ms 2.9MB 0ms 0ms ldc2 1.30.0
d 1.d 2.6ms 0.5ms 4.8MB 0ms 0ms dmd 2.101.2
go 1.go 2.6ms 0.4ms 2.9MB 0ms 0ms go 1.19.5

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 162ms 4.1ms 57.5MB 227ms 53ms go 1.19.5
go 1-m.go 583ms 26ms 174.0MB 557ms 353ms go 1.19.5
go 2-m.go 638ms 88ms 180.1MB 650ms 383ms go 1.19.5

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 40ms 1.2ms 24.8MB 37ms 13ms go 1.19.5
go 2.go 102ms 33ms 37.4MB 57ms 47ms go 1.19.5
go 1.go 130ms 16ms 36.9MB 90ms 53ms go 1.19.5

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 73ms 2.3ms 41.9MB 57ms 10ms go 1.19.5
d 2.d 76ms 3.7ms 15.6MB 67ms 0ms ldc2 1.30.0
go 1.go 171ms 4.2ms 20.2MB 157ms 7ms go 1.19.5
d 2.d 329ms 1.2ms 22.5MB 323ms 0ms dmd 2.101.2

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 420ms 3.3ms 188.8MB 380ms 123ms go 1.19.5
d 2.d 609ms 2.5ms 141.3MB 573ms 20ms ldc2 1.30.0
go 1.go 1078ms 2.7ms 102.5MB 1053ms 57ms go 1.19.5
d 2.d 3539ms 0.8ms 157.1MB 3573ms 27ms dmd 2.101.2

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 1088ms 23ms 51.1MB 1943ms 13ms ldc2 1.30.0
go 7-m.go 1498ms 12ms 42.0MB 2803ms 20ms go 1.19.5
d 1-m.d 4122ms 159ms 53.1MB 7417ms 13ms dmd 2.101.2

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 135ms 4.9ms 39.9MB 220ms 0ms ldc2 1.30.0
go 7-m.go 233ms 8.4ms 24.0MB 363ms 17ms go 1.19.5
d 1-m.d 425ms 8.2ms 43.8MB 753ms 10ms dmd 2.101.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 165ms 0.5ms 0.3MB 160ms 0ms tinygo 0.25.0
go 3.go 175ms 1.8ms 2.9MB 160ms 0ms go 1.19.5
d 1.d 178ms 0.4ms 3.7MB 167ms 0ms ldc2 1.30.0
d 1.d 251ms 1.4ms 5.5MB 240ms 0ms dmd 2.101.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 490ms 0.1ms 0.3MB 480ms 0ms tinygo 0.25.0
go 3.go 518ms 3.2ms 2.9MB 503ms 0ms go 1.19.5
d 1.d 523ms 1.9ms 5.7MB 510ms 0ms ldc2 1.30.0
d 1.d 745ms 5.4ms 5.4MB 737ms 0ms dmd 2.101.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 77ms 0.8ms 3.6MB 67ms 0ms ldc2 1.30.0
go 3.go 81ms 0.2ms 0.0MB 70ms 0ms tinygo 0.25.0
go 3.go 94ms 2.8ms 3.9MB 87ms 0ms go 1.19.5
d 1.d 111ms 0.9ms 5.7MB 100ms 0ms dmd 2.101.2

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 697ms 0.5ms 6.9MB 687ms 0ms ldc2 1.30.0
d 1.d 2720ms 3.1ms 8.2MB 2710ms 0ms dmd 2.101.2
go 1.go 4384ms 9.5ms 5.4MB 4373ms 0ms go 1.19.5
go 1.go timeout 0.0ms 4.9MB 4990ms 0ms tinygo 0.25.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 32ms 0.2ms 2.9MB 20ms 0ms ldc2 1.30.0
d 1.d 115ms 0.3ms 4.0MB 100ms 0ms dmd 2.101.2
go 1.go 185ms 2.5ms 2.9MB 170ms 0ms go 1.19.5
go 1.go 245ms 0.6ms 0.0MB 233ms 0ms tinygo 0.25.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1390ms 4.2ms 74.9MB 1450ms 10ms ldc2 1.30.0
go 1.go 1997ms 15ms 40.3MB 2810ms 27ms go 1.19.5
go 2.go 2327ms 59ms 41.8MB 3230ms 67ms go 1.19.5
d 1.d 2455ms 43ms 154.4MB 2757ms 30ms dmd 2.101.2
go 1.go 3809ms 7.3ms 213.3MB 3757ms 40ms tinygo 0.25.0
go 2.go timeout 0.0ms 90.8MB 4977ms 10ms tinygo 0.25.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 285ms 10ms 39.0MB 270ms 3ms ldc2 1.30.0
go 1.go 424ms 6.7ms 12.4MB 573ms 10ms go 1.19.5
go 2.go 492ms 6.9ms 14.7MB 657ms 17ms go 1.19.5
d 1.d 496ms 0.8ms 40.9MB 533ms 3ms dmd 2.101.2
go 1.go 656ms 1.2ms 51.1MB 637ms 3ms tinygo 0.25.0
go 2.go 1264ms 2.6ms 38.6MB 1247ms 3ms tinygo 0.25.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 409ms 0.9ms 1.5MB 400ms 0ms ldc2 1.30.0
d 2.d 423ms 0.6ms 1.5MB 410ms 0ms ldc2 1.30.0
go 1.go 456ms 1.4ms 2.9MB 440ms 0ms go 1.19.5
go 1.go 843ms 1.0ms 0.0MB 830ms 0ms tinygo 0.25.0
d 1.d 1539ms 0.4ms 2.8MB 1527ms 0ms dmd 2.101.2
d 2.d 2424ms 10ms 2.9MB 2410ms 0ms dmd 2.101.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 44ms 1.7ms 1.5MB 30ms 0ms ldc2 1.30.0
d 2.d 46ms 1.3ms 1.6MB 33ms 0ms ldc2 1.30.0
go 1.go 51ms 3.8ms 2.9MB 40ms 0ms go 1.19.5
go 1.go 86ms 0.6ms 0.0MB 80ms 0ms tinygo 0.25.0
d 1.d 157ms 0.3ms 2.8MB 147ms 0ms dmd 2.101.2
d 2.d 245ms 0.4ms 2.8MB 233ms 0ms dmd 2.101.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2.go 623ms 4.5ms 17.6MB 613ms 0ms tinygo 0.25.0
go 1.go 669ms 21ms 75.2MB 640ms 13ms go 1.19.5
go 1.go 727ms 17ms 43.1MB 707ms 3ms tinygo 0.25.0
d 1.d 728ms 11ms 43.6MB 700ms 10ms ldc2 1.30.0
d 1.d 756ms 17ms 75.6MB 730ms 10ms dmd 2.101.2
d 2.d 889ms 6.1ms 48.7MB 860ms 10ms ldc2 1.30.0
go 2.go 904ms 0.7ms 20.0MB 883ms 7ms go 1.19.5
d 2.d 1521ms 1.1ms 50.2MB 1497ms 7ms dmd 2.101.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 121ms 2.3ms 22.1MB 107ms 3ms go 1.19.5
d 1.d 127ms 0.4ms 14.5MB 113ms 0ms ldc2 1.30.0
go 1.go 131ms 0.7ms 13.4MB 120ms 0ms tinygo 0.25.0
d 1.d 134ms 2.0ms 24.5MB 120ms 0ms dmd 2.101.2
go 2.go 146ms 0.4ms 5.6MB 140ms 0ms tinygo 0.25.0
d 2.d 211ms 1.0ms 14.9MB 193ms 0ms ldc2 1.30.0
go 2.go 216ms 2.8ms 9.1MB 203ms 3ms go 1.19.5
d 2.d 378ms 0.2ms 16.6MB 363ms 0ms dmd 2.101.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1390ms 1.4ms 8.5MB 1367ms 7ms go 1.19.5
d 1.d 3457ms 10.0ms 7.8MB 3447ms 0ms ldc2 1.30.0
d 1.d timeout 0.0ms 9.9MB 4990ms 0ms dmd 2.101.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 335ms 5.3ms 8.4MB 317ms 0ms go 1.19.5
d 1.d 816ms 1.6ms 7.8MB 800ms 3ms ldc2 1.30.0
d 1.d 1729ms 7.1ms 9.6MB 1713ms 0ms dmd 2.101.2

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 742ms 8.9ms 167.5MB 947ms 50ms ldc2 1.30.0
d 3.d 1640ms 1.7ms 171.7MB 1880ms 37ms dmd 2.101.2
go 3.go timeout 0.0ms 110.9MB 4963ms 83ms go 1.19.5
go 3.go timeout 0.0ms 120.9MB 4960ms 30ms tinygo 0.25.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 79ms 2.2ms 22.4MB 87ms 3ms ldc2 1.30.0
d 3.d 173ms 2.4ms 26.2MB 187ms 3ms dmd 2.101.2
go 3.go 2536ms 6.2ms 17.8MB 2510ms 27ms go 1.19.5
go 3.go timeout 0.0ms 30.2MB 4987ms 0ms tinygo 0.25.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 173ms 4.1ms 10.1MB 160ms 3ms go 1.19.5
d 1.d timeout 0.0ms 6.1MB 4990ms 0ms dmd 2.101.2
d 1.d timeout 0.0ms 3.8MB 4983ms 7ms ldc2 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 57ms 1.2ms 9.6MB 43ms 0ms go 1.19.5
d 1.d 1435ms 3.7ms 3.9MB 1420ms 3ms ldc2 1.30.0
d 1.d 3248ms 5.0ms 5.9MB 3240ms 0ms dmd 2.101.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2502ms 32ms 6.9MB 4830ms 3ms go 1.19.5
d 1.d 4292ms 3.4ms 3.8MB 4277ms 0ms ldc2 1.30.0
d 1.d 4779ms 0.4ms 5.7MB 4770ms 0ms dmd 2.101.2
go 1.go 4961ms 8.6ms 5.5MB 4950ms 0ms go 1.19.5
go 1.go timeout 0.0ms 0.4MB 4987ms 0ms tinygo 0.25.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 632ms 4.9ms 2.9MB 1197ms 0ms go 1.19.5
d 1.d 1075ms 0.1ms 3.4MB 1063ms 0ms ldc2 1.30.0
d 1.d 1199ms 1.8ms 5.4MB 1190ms 0ms dmd 2.101.2
go 1.go 1248ms 4.9ms 2.9MB 1230ms 0ms go 1.19.5
go 1.go 2584ms 6.9ms 0.0MB 2567ms 0ms tinygo 0.25.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 168ms 1.6ms 4.9MB 293ms 0ms go 1.19.5
d 1.d 271ms 0.5ms 3.0MB 260ms 0ms ldc2 1.30.0
d 1.d 304ms 0.8ms 4.7MB 290ms 0ms dmd 2.101.2
go 1.go 316ms 2.0ms 4.9MB 303ms 0ms go 1.19.5
go 1.go 645ms 0.1ms 0.0MB 633ms 0ms tinygo 0.25.0