Go VS D benchmarks

Current benchmark data was generated on Fri Aug 01 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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
go 1.go 1726ms 16ms 51.9MB 1707ms 10ms tinygo 0.38.0
d 1.d 2187ms 1.9ms 312.5MB 2160ms 33ms ldc2 1.41.0
go 1-m.go 2343ms 11ms 41.9MB 5213ms 33ms go 1.24.5
d 1.d 3000ms 18ms 314.1MB 3163ms 50ms dmd 2.111.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 152ms 0.5ms 5.0MB 140ms 0ms tinygo 0.38.0
d 1.d 205ms 3.2ms 207.9MB 180ms 13ms ldc2 1.41.0
go 1-m.go 207ms 1.7ms 8.3MB 367ms 7ms go 1.24.5
d 1.d 262ms 1.9ms 209.7MB 237ms 10ms dmd 2.111.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 660ms 61ms 15.5MB 2573ms 0ms go 1.24.5
d 1.d timeout 0.0ms 16.5MB 4970ms 17ms dmd 2.111.0
d 1.d timeout 0.0ms 17.5MB 4963ms 27ms ldc2 1.41.0
go 1.go timeout 0.0ms 13.3MB 2440ms 17047ms tinygo 0.38.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 44ms 7.8ms 7.5MB 147ms 0ms go 1.24.5
go 1-m.go 672ms 69ms 4.4MB 307ms 2230ms tinygo 0.38.0
d 1.d 1058ms 5.4ms 10.2MB 1033ms 10ms ldc2 1.41.0
d 1.d 1373ms 11ms 12.5MB 1350ms 10ms dmd 2.111.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 118ms 0.3ms 10.5MB 110ms 0ms go 1.24.5
d 1.d 2555ms 1.6ms 8.1MB 2543ms 0ms ldc2 1.41.0
d 1.d 2870ms 7.3ms 10.4MB 2860ms 0ms dmd 2.111.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 33ms 0.4ms 8.2MB 23ms 0ms go 1.24.5
d 1.d 443ms 3.2ms 8.1MB 430ms 0ms ldc2 1.41.0
d 1.d 517ms 0.4ms 10.5MB 510ms 0ms dmd 2.111.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 374ms 6.5ms 3.0MB 1420ms 0ms ldc2 1.41.0
go 3-m.go 724ms 0.6ms 5.5MB 2807ms 0ms go 1.24.5
go 3-m.go 725ms 2.0ms 3.0MB 2653ms 50ms tinygo 0.38.0
d 2-im.d 1109ms 4.2ms 3.0MB 4320ms 0ms ldc2 1.41.0
d 1-i.d 1489ms 0.4ms 2.9MB 1480ms 0ms ldc2 1.41.0
d 1.d 3152ms 15ms 2.9MB 3140ms 0ms ldc2 1.41.0
d 2-i.d 3224ms 2.6ms 2.9MB 3213ms 0ms ldc2 1.41.0
d 1.d 3538ms 5.1ms 4.6MB 3527ms 0ms dmd 2.111.0
d 1-im.d 4488ms 40ms 4.9MB 17597ms 0ms dmd 2.111.0
d 1-i.d timeout 0.0ms 4.6MB 4990ms 0ms dmd 2.111.0
d 2-i.d timeout 0.0ms 4.6MB 4990ms 0ms dmd 2.111.0
d 2-im.d timeout 0.0ms 4.9MB 19753ms 7ms dmd 2.111.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 36ms 1.2ms 3.1MB 110ms 0ms ldc2 1.41.0
go 3-m.go 75ms 0.4ms 5.5MB 210ms 0ms go 1.24.5
d 2-im.d 97ms 2.1ms 3.0MB 350ms 0ms ldc2 1.41.0
go 3-m.go 103ms 4.4ms 3.0MB 190ms 33ms tinygo 0.38.0
d 1-i.d 124ms 0.3ms 2.9MB 120ms 0ms ldc2 1.41.0
d 1.d 261ms 0.5ms 2.9MB 250ms 0ms ldc2 1.41.0
d 2-i.d 266ms 1.0ms 2.9MB 260ms 0ms ldc2 1.41.0
d 1.d 297ms 2.2ms 4.6MB 287ms 0ms dmd 2.111.0
d 1-im.d 376ms 0.8ms 4.8MB 1433ms 0ms dmd 2.111.0
d 2-im.d 525ms 3.2ms 5.1MB 2010ms 0ms dmd 2.111.0
d 1-i.d 880ms 8.2ms 4.6MB 870ms 0ms dmd 2.111.0
d 2-i.d 1375ms 1.1ms 4.6MB 1363ms 0ms dmd 2.111.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 112ms 2.7ms 2.9MB 103ms 0ms ldc2 1.41.0
go 3-m.go 118ms 1.0ms 7.5MB 380ms 0ms go 1.24.5
d 1.d 641ms 1.0ms 4.6MB 630ms 0ms dmd 2.111.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 14ms 0.5ms 2.9MB 10ms 0ms ldc2 1.41.0
go 3-m.go 17ms 1.0ms 7.5MB 30ms 0ms go 1.24.5
d 1.d 67ms 0.8ms 4.8MB 60ms 0ms dmd 2.111.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.8ms 0.1ms 0.3MB 0ms 0ms tinygo 0.38.0
go 1.go 1.5ms 0.1ms 3.4MB 0ms 0ms go 1.24.5
d 1.d 1.6ms 0.1ms 2.9MB 0ms 0ms ldc2 1.41.0
d 1.d 2.0ms 0.2ms 5.1MB 0ms 0ms dmd 2.111.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 119ms 2.9ms 56.1MB 333ms 80ms go 1.24.5
go 1-m.go 378ms 12ms 172.9MB 707ms 580ms go 1.24.5
go 2-m.go 401ms 6.5ms 170.4MB 683ms 660ms go 1.24.5

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 22ms 13ms 23.8MB 65ms 20ms go 1.24.5
go 2-m.go 24ms 27ms 26.6MB 70ms 90ms go 1.24.5
go 1-m.go 70ms 2.8ms 36.9MB 90ms 100ms go 1.24.5

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 45ms 2.2ms 39.1MB 37ms 3ms go 1.24.5
d 2.d 58ms 1.1ms 15.9MB 60ms 7ms ldc2 1.41.0
go 1.go 139ms 1.8ms 18.6MB 130ms 0ms go 1.24.5
d 2.d 237ms 2.6ms 22.6MB 240ms 7ms dmd 2.111.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 259ms 16ms 149.3MB 240ms 60ms go 1.24.5
d 2.d 464ms 5.0ms 140.4MB 437ms 30ms ldc2 1.41.0
go 1.go 751ms 4.5ms 103.6MB 737ms 20ms go 1.24.5
d 2.d 2479ms 20ms 158.4MB 2493ms 37ms dmd 2.111.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 639ms 21ms 47.9MB 2073ms 10ms ldc2 1.41.0
go 7-m.go 676ms 5.9ms 39.5MB 2397ms 27ms go 1.24.5
d 1-m.d 1884ms 33ms 50.0MB 5657ms 13ms dmd 2.111.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 92ms 1.5ms 38.7MB 253ms 7ms ldc2 1.41.0
go 7-m.go 131ms 0.3ms 24.5MB 350ms 20ms go 1.24.5
d 1-m.d 212ms 8.4ms 40.9MB 610ms 13ms dmd 2.111.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 119ms 1.2ms 3.5MB 110ms 0ms go 1.24.5
d 1.d 130ms 1.7ms 6.1MB 120ms 0ms ldc2 1.41.0
go 3.go 134ms 2.9ms 0.4MB 127ms 0ms tinygo 0.38.0
d 1.d 176ms 2.3ms 8.1MB 163ms 7ms dmd 2.111.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 380ms 0.5ms 5.9MB 370ms 10ms ldc2 1.41.0
go 3.go 385ms 3.2ms 0.4MB 373ms 0ms tinygo 0.38.0
go 3.go 387ms 4.2ms 3.5MB 380ms 0ms go 1.24.5
d 1.d 510ms 2.8ms 8.2MB 500ms 10ms dmd 2.111.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 50ms 1.0ms 3.5MB 40ms 0ms go 1.24.5
d 1.d 57ms 1.3ms 5.9MB 50ms 0ms ldc2 1.41.0
go 3.go 65ms 2.2ms 0.3MB 60ms 0ms tinygo 0.38.0
d 1.d 79ms 0.2ms 7.9MB 70ms 0ms dmd 2.111.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 367ms 0.6ms 7.5MB 357ms 0ms ldc2 1.41.0
d 1.d 2107ms 12ms 9.4MB 2097ms 0ms dmd 2.111.0
go 1.go 2666ms 9.4ms 7.7MB 2660ms 0ms go 1.24.5
go 1.go 3575ms 6.5ms 3.3MB 3563ms 0ms tinygo 0.38.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 17ms 0.1ms 3.0MB 10ms 0ms ldc2 1.41.0
d 1.d 91ms 2.3ms 4.6MB 83ms 0ms dmd 2.111.0
go 1.go 113ms 1.1ms 3.6MB 107ms 0ms go 1.24.5
go 1.go 152ms 3.1ms 0.4MB 147ms 0ms tinygo 0.38.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 1027ms 9.5ms 35.4MB 1010ms 0ms tinygo 0.38.0
d 1.d 1093ms 13ms 312.6MB 1057ms 37ms ldc2 1.41.0
go 2.go 1327ms 3.3ms 51.9MB 1307ms 10ms tinygo 0.38.0
go 1-m.go 1436ms 4.6ms 35.2MB 3040ms 37ms go 1.24.5
go 2-m.go 1649ms 17ms 40.9MB 3633ms 33ms go 1.24.5
d 1.d 1863ms 29ms 314.3MB 1990ms 47ms dmd 2.111.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 206ms 2.0ms 11.6MB 193ms 0ms tinygo 0.38.0
d 1.d 227ms 2.7ms 312.5MB 193ms 20ms ldc2 1.41.0
go 2.go 261ms 3.0ms 15.4MB 250ms 0ms tinygo 0.38.0
go 1-m.go 327ms 1.0ms 12.2MB 660ms 20ms go 1.24.5
d 1.d 359ms 1.1ms 315.0MB 323ms 27ms dmd 2.111.0
go 2-m.go 368ms 1.6ms 14.0MB 770ms 27ms go 1.24.5

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 349ms 3.6ms 0.3MB 340ms 0ms tinygo 0.38.0
go 1.go 350ms 1.9ms 3.5MB 340ms 0ms go 1.24.5
d 1.d 361ms 0.5ms 2.9MB 350ms 0ms ldc2 1.41.0
d 2.d 361ms 1.4ms 2.9MB 350ms 0ms ldc2 1.41.0
d 1.d 683ms 2.2ms 4.8MB 673ms 0ms dmd 2.111.0
d 2.d 2033ms 7.1ms 4.8MB 2023ms 0ms dmd 2.111.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 37ms 1.3ms 0.3MB 30ms 0ms tinygo 0.38.0
go 1.go 38ms 0.1ms 3.5MB 30ms 0ms go 1.24.5
d 2.d 39ms 0.7ms 2.9MB 30ms 0ms ldc2 1.41.0
d 1.d 39ms 0.3ms 2.9MB 30ms 0ms ldc2 1.41.0
d 1.d 71ms 1.1ms 4.8MB 60ms 0ms dmd 2.111.0
d 2.d 208ms 2.9ms 4.8MB 200ms 0ms dmd 2.111.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 303ms 7.2ms 43.5MB 287ms 0ms ldc2 1.41.0
go 1.go 310ms 6.6ms 71.7MB 297ms 0ms go 1.24.5
go 1.go 312ms 4.6ms 39.4MB 300ms 0ms tinygo 0.38.0
d 1.d 345ms 5.5ms 79.3MB 327ms 3ms dmd 2.111.0
go 2.go 470ms 3.8ms 20.0MB 460ms 0ms tinygo 0.38.0
go 2.go 787ms 2.0ms 21.8MB 777ms 10ms go 1.24.5
d 2.d 846ms 5.3ms 47.7MB 827ms 7ms ldc2 1.41.0
d 2.d 1170ms 7.1ms 51.6MB 1150ms 7ms dmd 2.111.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 63ms 1.9ms 21.6MB 57ms 0ms go 1.24.5
d 1.d 64ms 2.7ms 15.7MB 53ms 0ms ldc2 1.41.0
go 1.go 67ms 2.7ms 10.1MB 60ms 0ms tinygo 0.38.0
d 1.d 75ms 1.7ms 25.5MB 67ms 0ms dmd 2.111.0
go 2.go 119ms 3.3ms 4.1MB 110ms 0ms tinygo 0.38.0
go 2.go 194ms 4.5ms 7.1MB 183ms 0ms go 1.24.5
d 2.d 210ms 2.0ms 17.7MB 200ms 0ms ldc2 1.41.0
d 2.d 295ms 1.1ms 19.7MB 280ms 0ms dmd 2.111.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1120ms 3.1ms 10.7MB 1103ms 7ms go 1.24.5
d 1.d 2445ms 17ms 8.1MB 2407ms 423ms ldc2 1.41.0
d 1.d 4429ms 2.9ms 10.5MB 4383ms 463ms dmd 2.111.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 268ms 3.1ms 8.6MB 257ms 0ms go 1.24.5
d 1.d 582ms 3.3ms 8.2MB 557ms 110ms ldc2 1.41.0
d 1.d 1056ms 3.2ms 10.4MB 1033ms 110ms dmd 2.111.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 584ms 1.7ms 172.2MB 767ms 20ms ldc2 1.41.0
d 3.d 1200ms 3.9ms 177.3MB 1387ms 27ms dmd 2.111.0
go 3.go timeout 0.0ms 120.5MB 4980ms 47ms go 1.24.5
go 3.go timeout 0.0ms 83.9MB 4973ms 10ms tinygo 0.38.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 63ms 0.8ms 26.3MB 70ms 0ms ldc2 1.41.0
d 3.d 126ms 0.9ms 31.7MB 137ms 0ms dmd 2.111.0
go 3.go 1781ms 5.2ms 20.3MB 1773ms 10ms go 1.24.5
go 3.go 2266ms 7.5ms 22.3MB 2247ms 0ms tinygo 0.38.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 91ms 1.7ms 5.2MB 83ms 0ms go 1.24.5
d 1.d 4859ms 111ms 4.3MB 4827ms 367ms ldc2 1.41.0
d 1.d timeout 0.0ms 6.5MB 4960ms 297ms dmd 2.111.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 25ms 0.2ms 5.2MB 20ms 0ms go 1.24.5
d 1.d 1214ms 8.8ms 3.9MB 1190ms 100ms ldc2 1.41.0
d 1.d 2046ms 14ms 6.5MB 2037ms 100ms dmd 2.111.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 1906ms 16ms 5.4MB 7413ms 3ms go 1.24.5
d 1.d 3597ms 3.2ms 6.2MB 3587ms 0ms ldc2 1.41.0
d 1.d 3655ms 25ms 8.4MB 3643ms 0ms dmd 2.111.0
go 1.go 3693ms 15ms 5.6MB 3690ms 0ms go 1.24.5
go 1.go timeout 0.0ms 0.5MB 4990ms 0ms tinygo 0.38.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 480ms 1.0ms 5.5MB 1843ms 0ms go 1.24.5
d 1.d 901ms 0.9ms 3.5MB 890ms 0ms ldc2 1.41.0
d 1.d 921ms 9.3ms 5.3MB 910ms 0ms dmd 2.111.0
go 1.go 924ms 10ms 3.5MB 917ms 0ms go 1.24.5
go 1.go 1397ms 0.7ms 0.4MB 1390ms 0ms tinygo 0.38.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 125ms 1.2ms 5.6MB 457ms 0ms go 1.24.5
d 1.d 228ms 1.4ms 3.3MB 220ms 0ms ldc2 1.41.0
d 1.d 233ms 1.9ms 7.2MB 220ms 0ms dmd 2.111.0
go 1.go 233ms 5.1ms 3.5MB 223ms 0ms go 1.24.5
go 1.go 351ms 0.8ms 0.4MB 340ms 0ms tinygo 0.38.0