D VS Rust benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M 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
rust 4.rs 2015ms 13ms 33.7MB 1983ms 13ms rustc 1.67.0
rust 5.rs 2208ms 16ms 33.7MB 2180ms 13ms rustc 1.67.0
rust 3.rs 2379ms 46ms 49.8MB 2343ms 17ms rustc 1.67.0
d 1.d 3904ms 94ms 75.1MB 4177ms 23ms ldc2 1.30.0
d 1.d timeout 0.0ms 125.0MB 5580ms 40ms dmd 2.102.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4.rs 179ms 1.1ms 5.7MB 170ms 0ms rustc 1.67.0
rust 5.rs 200ms 2.5ms 5.8MB 183ms 0ms rustc 1.67.0
rust 3.rs 211ms 2.3ms 7.7MB 190ms 0ms rustc 1.67.0
d 1.d 356ms 15ms 15.1MB 343ms 0ms ldc2 1.30.0
d 1.d 480ms 7.3ms 27.2MB 497ms 7ms dmd 2.102.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 1161ms 4.4ms 6.2MB 2220ms 23ms rustc 1.67.0
rust 5-m.rs 1222ms 11ms 4.4MB 2347ms 30ms rustc 1.67.0
rust 3.rs 2254ms 3.6ms 6.2MB 2200ms 37ms rustc 1.67.0
rust 4.rs 3557ms 11ms 4.5MB 3540ms 0ms rustc 1.67.0
rust 1-m.rs 3918ms 52ms 4.9MB 7567ms 110ms rustc 1.67.0
d 1.d timeout 0.0ms 14.2MB 4970ms 10ms dmd 2.102.0
d 1.d timeout 0.0ms 13.3MB 4960ms 17ms ldc2 1.30.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 105ms 17ms 2.9MB 173ms 7ms rustc 1.67.0
rust 3.rs 140ms 0.7ms 3.2MB 127ms 0ms rustc 1.67.0
rust 5-m.rs 141ms 26ms 2.7MB 243ms 7ms rustc 1.67.0
rust 4.rs 235ms 1.7ms 2.3MB 223ms 0ms rustc 1.67.0
rust 1-m.rs 271ms 6.3ms 2.9MB 480ms 13ms rustc 1.67.0
d 1.d 1458ms 6.4ms 8.2MB 1440ms 3ms ldc2 1.30.0
d 1.d 1923ms 9.8ms 9.9MB 1897ms 13ms dmd 2.102.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 165ms 0.5ms 3.6MB 150ms 0ms rustc 1.67.0
rust 2.rs 685ms 1.5ms 3.8MB 673ms 0ms rustc 1.67.0
d 1.d timeout 0.0ms 9.4MB 4980ms 3ms dmd 2.102.0
d 1.d timeout 0.0ms 7.6MB 4987ms 0ms ldc2 1.30.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 46ms 0.8ms 2.9MB 37ms 0ms rustc 1.67.0
rust 2.rs 133ms 0.6ms 3.1MB 120ms 0ms rustc 1.67.0
d 1.d 1070ms 17ms 6.8MB 1057ms 0ms ldc2 1.30.0
d 1.d 1250ms 6.7ms 8.8MB 1237ms 0ms dmd 2.102.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-im.rs 750ms 1.1ms 1.0MB 1453ms 0ms rustc 1.67.0
d 1-im.d 799ms 0.9ms 1.5MB 1513ms 0ms ldc2 1.30.0
rust 2-im.rs 1071ms 12ms 1.0MB 2070ms 0ms rustc 1.67.0
rust 5-m.rs 1427ms 22ms 1.1MB 2730ms 0ms rustc 1.67.0
d 1-i.d 1483ms 6.0ms 1.5MB 1470ms 0ms ldc2 1.30.0
rust 3-i.rs 1492ms 23ms 1.0MB 1473ms 0ms rustc 1.67.0
rust 2-i.rs 2205ms 4.9ms 1.0MB 2193ms 0ms rustc 1.67.0
rust 1-m.rs 2866ms 4.7ms 1.0MB 5527ms 0ms rustc 1.67.0
d 2-im.d 3038ms 42ms 1.5MB 5880ms 0ms ldc2 1.30.0
rust 1.rs 4707ms 34ms 1.0MB 4693ms 0ms rustc 1.67.0
d 1.d 4796ms 40ms 1.5MB 4780ms 0ms ldc2 1.30.0
d 1-i.d timeout 0.0ms 2.2MB 4983ms 0ms dmd 2.102.0
d 1-im.d timeout 0.0ms 2.6MB 9783ms 3ms dmd 2.102.0
d 1.d timeout 0.0ms 2.8MB 4983ms 0ms dmd 2.102.0
d 2-i.d timeout 0.0ms 2.6MB 4983ms 0ms dmd 2.102.0
d 2-im.d timeout 0.0ms 2.7MB 9860ms 0ms dmd 2.102.0
d 2-i.d timeout 0.0ms 1.6MB 4987ms 0ms ldc2 1.30.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-im.rs 70ms 0.7ms 1.0MB 117ms 0ms rustc 1.67.0
d 1-im.d 79ms 2.1ms 1.5MB 120ms 0ms ldc2 1.30.0
rust 2-im.rs 100ms 3.0ms 1.1MB 170ms 0ms rustc 1.67.0
rust 5-m.rs 125ms 1.7ms 1.0MB 220ms 0ms rustc 1.67.0
rust 3-i.rs 126ms 0.8ms 1.1MB 117ms 0ms rustc 1.67.0
d 1-i.d 134ms 13ms 1.6MB 123ms 0ms ldc2 1.30.0
rust 2-i.rs 191ms 8.6ms 1.1MB 183ms 0ms rustc 1.67.0
rust 1-m.rs 258ms 4.6ms 1.1MB 453ms 3ms rustc 1.67.0
d 2-im.d 272ms 7.5ms 1.6MB 480ms 0ms ldc2 1.30.0
d 1.d 386ms 6.0ms 1.6MB 377ms 0ms ldc2 1.30.0
rust 1.rs 394ms 1.2ms 1.1MB 383ms 0ms rustc 1.67.0
d 1.d 420ms 0.6ms 2.7MB 407ms 0ms dmd 2.102.0
d 2-i.d 480ms 0.4ms 1.5MB 470ms 0ms ldc2 1.30.0
d 1-im.d 657ms 120ms 2.7MB 1037ms 0ms dmd 2.102.0
d 2-im.d 923ms 22ms 2.9MB 1730ms 0ms dmd 2.102.0
d 1-i.d 1057ms 43ms 2.2MB 1047ms 0ms dmd 2.102.0
d 2-i.d 1622ms 10ms 2.6MB 1613ms 0ms dmd 2.102.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 5c-m.rs 212ms 1.9ms 1.7MB 370ms 7ms rustc 1.69.0-nightly
rust 5-m.rs 224ms 5.8ms 1.7MB 400ms 0ms rustc 1.67.0
d 1.d 251ms 3.2ms 30.8MB 227ms 13ms ldc2 1.30.0
rust 1c.rs 257ms 0.4ms 1.0MB 247ms 0ms rustc 1.69.0-nightly
rust 1.rs 314ms 1.1ms 1.0MB 307ms 0ms rustc 1.67.0
d 1.d 805ms 2.8ms 40.3MB 787ms 10ms dmd 2.102.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1c.rs 29ms 0.8ms 1.0MB 20ms 0ms rustc 1.69.0-nightly
d 1.d 30ms 1.1ms 6.9MB 13ms 0ms ldc2 1.30.0
rust 5-m.rs 32ms 0.5ms 1.7MB 40ms 0ms rustc 1.67.0
rust 5c-m.rs 33ms 3.0ms 1.7MB 37ms 3ms rustc 1.69.0-nightly
rust 1.rs 35ms 2.0ms 1.0MB 23ms 0ms rustc 1.67.0
d 1.d 85ms 0.2ms 13.2MB 77ms 0ms dmd 2.102.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 2.5ms 0.6ms 1.9MB 0ms 0ms rustc 1.67.0
rust 1.rs 2.6ms 0.8ms 1.0MB 0ms 0ms rustc 1.69.0-nightly
d 1.d 2.8ms 1.0ms 4.4MB 0ms 0ms dmd 2.102.0
d 1.d 3.3ms 0.9ms 2.9MB 0ms 0ms ldc2 1.30.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 87ms 5.4ms 15.3MB 80ms 3ms ldc2 1.30.0
rust 2.rs 96ms 3.0ms 38.1MB 70ms 10ms rustc 1.67.0
rust 3.rs 96ms 2.4ms 36.2MB 73ms 10ms rustc 1.67.0
rust 1.rs 154ms 1.7ms 75.4MB 100ms 40ms rustc 1.67.0
d 2.d 357ms 9.7ms 22.5MB 347ms 3ms dmd 2.102.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 598ms 0.3ms 257.9MB 460ms 120ms rustc 1.67.0
rust 3.rs 611ms 20ms 258.6MB 460ms 137ms rustc 1.67.0
d 2.d 700ms 16ms 138.1MB 650ms 33ms ldc2 1.30.0
rust 1.rs 1117ms 11ms 605.2MB 760ms 340ms rustc 1.67.0
d 2.d 3745ms 81ms 157.5MB 3750ms 47ms dmd 2.102.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 422ms 12ms 28.2MB 733ms 17ms rustc 1.67.0
rust 8.rs 743ms 40ms 23.3MB 710ms 13ms rustc 1.67.0
d 1-m.d 1337ms 32ms 51.3MB 2470ms 23ms ldc2 1.30.0
d 1-m.d 4450ms 89ms 53.3MB 8250ms 23ms dmd 2.102.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 57ms 1.0ms 15.7MB 77ms 3ms rustc 1.67.0
rust 8.rs 88ms 3.3ms 11.6MB 70ms 7ms rustc 1.67.0
d 1-m.d 169ms 9.7ms 40.6MB 277ms 3ms ldc2 1.30.0
d 1-m.d 484ms 14ms 40.8MB 863ms 13ms dmd 2.102.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 65ms 6.5ms 1.8MB 57ms 0ms rustc 1.67.0
rust 1.rs 90ms 3.6ms 2.1MB 80ms 0ms rustc 1.67.0
d 1.d 222ms 5.9ms 3.7MB 213ms 0ms ldc2 1.30.0
d 1.d 296ms 1.2ms 5.3MB 283ms 0ms dmd 2.102.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 258ms 14ms 1.1MB 243ms 0ms rustc 1.67.0
rust 1.rs 369ms 2.5ms 1.0MB 360ms 0ms rustc 1.67.0
d 1.d 597ms 2.1ms 3.7MB 587ms 0ms ldc2 1.30.0
d 1.d 860ms 10ms 5.4MB 853ms 0ms dmd 2.102.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 40ms 2.7ms 1.1MB 30ms 0ms rustc 1.67.0
rust 1.rs 60ms 1.7ms 1.0MB 50ms 0ms rustc 1.67.0
d 1.d 94ms 1.2ms 3.7MB 80ms 0ms ldc2 1.30.0
d 1.d 128ms 2.3ms 5.0MB 117ms 0ms dmd 2.102.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 9.rs 435ms 4.1ms 4.9MB 423ms 0ms rustc 1.69.0-nightly
rust 8.rs 512ms 3.2ms 4.9MB 497ms 0ms rustc 1.67.0
d 1.d 713ms 6.5ms 6.3MB 697ms 0ms ldc2 1.30.0
d 1.d 3279ms 13ms 7.4MB 3260ms 0ms dmd 2.102.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 9.rs 20ms 0.1ms 1.0MB 10ms 0ms rustc 1.69.0-nightly
rust 8.rs 25ms 1.2ms 1.0MB 13ms 0ms rustc 1.67.0
d 1.d 34ms 1.0ms 2.9MB 23ms 0ms ldc2 1.30.0
d 1.d 140ms 0.9ms 3.7MB 130ms 0ms dmd 2.102.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 1082ms 5.4ms 33.7MB 1050ms 17ms rustc 1.67.0
d 1.d 1818ms 21ms 74.8MB 1883ms 23ms ldc2 1.30.0
d 1.d 3152ms 10ms 153.9MB 3520ms 57ms dmd 2.102.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 226ms 4.6ms 9.9MB 207ms 0ms rustc 1.67.0
d 1.d 355ms 8.2ms 38.9MB 330ms 13ms ldc2 1.30.0
d 1.d 660ms 15ms 40.5MB 707ms 10ms dmd 2.102.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 255ms 0.3ms 1.0MB 237ms 0ms rustc 1.67.0
rust 7-i.rs 376ms 6.0ms 1.0MB 363ms 0ms rustc 1.67.0
rust 3.rs 404ms 0.9ms 1.1MB 390ms 0ms rustc 1.69.0-nightly
rust 2.rs 446ms 30ms 1.1MB 433ms 0ms rustc 1.67.0
rust 1.rs 503ms 8.7ms 1.1MB 490ms 0ms rustc 1.67.0
d 1.d 542ms 7.3ms 1.5MB 527ms 0ms ldc2 1.30.0
d 2.d 577ms 7.9ms 1.5MB 563ms 0ms ldc2 1.30.0
d 1.d 1466ms 20ms 2.6MB 1453ms 0ms dmd 2.102.0
d 2.d 2593ms 6.6ms 2.7MB 2580ms 0ms dmd 2.102.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 29ms 0.5ms 1.0MB 20ms 0ms rustc 1.67.0
rust 7-i.rs 41ms 0.3ms 1.0MB 30ms 0ms rustc 1.67.0
rust 3.rs 43ms 0.1ms 1.0MB 30ms 0ms rustc 1.69.0-nightly
rust 2.rs 45ms 0.5ms 1.0MB 37ms 0ms rustc 1.67.0
rust 1.rs 55ms 4.2ms 1.0MB 43ms 0ms rustc 1.67.0
d 1.d 57ms 0.4ms 1.5MB 50ms 0ms ldc2 1.30.0
d 2.d 60ms 0.3ms 1.5MB 47ms 0ms ldc2 1.30.0
d 1.d 155ms 4.8ms 2.6MB 140ms 0ms dmd 2.102.0
d 2.d 264ms 4.0ms 2.6MB 257ms 0ms dmd 2.102.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 497ms 1.2ms 6.6MB 480ms 0ms rustc 1.67.0
d 1.d 942ms 18ms 42.5MB 907ms 13ms ldc2 1.30.0
d 2.d 966ms 16ms 48.7MB 930ms 17ms ldc2 1.30.0
d 1.d 988ms 16ms 76.1MB 953ms 20ms dmd 2.102.0
rust 1.rs 1080ms 27ms 40.8MB 1050ms 13ms rustc 1.67.0
d 2.d 1829ms 35ms 50.0MB 1800ms 13ms dmd 2.102.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 111ms 0.5ms 3.1MB 100ms 0ms rustc 1.67.0
d 1.d 142ms 5.6ms 14.1MB 127ms 0ms ldc2 1.30.0
rust 1.rs 147ms 6.8ms 11.6MB 133ms 0ms rustc 1.67.0
d 1.d 161ms 1.4ms 26.0MB 140ms 0ms dmd 2.102.0
d 2.d 232ms 6.0ms 15.4MB 217ms 0ms ldc2 1.30.0
d 2.d 458ms 1.4ms 16.7MB 443ms 0ms dmd 2.102.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 1979ms 8.1ms 2.7MB 1890ms 73ms rustc 1.67.0
rust 1.rs 2064ms 22ms 2.8MB 1870ms 173ms rustc 1.67.0
d 1.d 3528ms 25ms 7.9MB 3530ms 17ms ldc2 1.30.0
d 1.d timeout 0.0ms 9.3MB 4997ms 17ms dmd 2.102.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 441ms 3.4ms 2.4MB 423ms 0ms rustc 1.67.0
rust 2.rs 459ms 11ms 2.5MB 447ms 0ms rustc 1.67.0
d 1.d 833ms 5.7ms 7.8MB 820ms 3ms ldc2 1.30.0
d 1.d 1661ms 15ms 9.4MB 1647ms 7ms dmd 2.102.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7.rs 672ms 6.4ms 77.6MB 867ms 30ms rustc 1.67.0
d 3.d 881ms 1.9ms 167.1MB 1077ms 73ms ldc2 1.30.0
d 3.d 2003ms 6.0ms 171.4MB 2230ms 63ms dmd 2.102.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7.rs 74ms 3.0ms 11.6MB 87ms 0ms rustc 1.67.0
d 3.d 95ms 1.0ms 23.2MB 100ms 7ms ldc2 1.30.0
d 3.d 211ms 1.4ms 25.3MB 217ms 3ms dmd 2.102.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0.rs 164ms 0.4ms 1.1MB 153ms 0ms rustc 1.67.0
rust 1.rs 2258ms 26ms 1.1MB 2243ms 0ms rustc 1.67.0
d 1.d timeout 0.0ms 6.0MB 4993ms 3ms dmd 2.102.0
d 1.d timeout 0.0ms 3.7MB 4990ms 7ms ldc2 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0.rs 45ms 1.5ms 1.1MB 33ms 0ms rustc 1.67.0
rust 1.rs 559ms 2.7ms 1.1MB 550ms 0ms rustc 1.67.0
d 1.d 1797ms 20ms 3.8MB 1787ms 0ms ldc2 1.30.0
d 1.d 3571ms 7.9ms 5.9MB 3563ms 0ms dmd 2.102.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 1083ms 2.6ms 2.5MB 2073ms 3ms rustc 1.69.0-nightly
rust 7-m.rs 1085ms 14ms 2.1MB 2083ms 0ms rustc 1.67.0
rust 8.rs 2075ms 12ms 2.4MB 2067ms 0ms rustc 1.69.0-nightly
rust 7.rs 2099ms 40ms 2.2MB 2080ms 0ms rustc 1.67.0
rust 2-m.rs 2234ms 16ms 2.3MB 4307ms 3ms rustc 1.67.0
d 1.d 3326ms 2880ms 5.1MB 4983ms 0ms dmd 2.102.0
d 1.d 4357ms 8.9ms 3.7MB 4343ms 0ms ldc2 1.30.0
rust 2.rs timeout 0.0ms 2.0MB 4987ms 0ms rustc 1.67.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 280ms 0.9ms 1.1MB 513ms 0ms rustc 1.67.0
rust 8-m.rs 280ms 2.6ms 2.2MB 510ms 0ms rustc 1.69.0-nightly
rust 7.rs 523ms 1.8ms 1.1MB 510ms 0ms rustc 1.67.0
rust 2-m.rs 561ms 0.8ms 2.1MB 1063ms 0ms rustc 1.67.0
rust 8.rs 565ms 14ms 2.1MB 553ms 0ms rustc 1.69.0-nightly
d 1.d 1091ms 0.8ms 3.5MB 1080ms 0ms ldc2 1.30.0
d 1.d 1256ms 3.0ms 5.1MB 1243ms 0ms dmd 2.102.0
rust 2.rs 1966ms 23ms 1.0MB 1950ms 0ms rustc 1.67.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 77ms 1.9ms 1.1MB 127ms 0ms rustc 1.69.0-nightly
rust 7-m.rs 79ms 1.6ms 1.0MB 123ms 0ms rustc 1.67.0
rust 8.rs 137ms 2.1ms 1.1MB 123ms 0ms rustc 1.69.0-nightly
rust 7.rs 138ms 2.1ms 1.1MB 130ms 0ms rustc 1.67.0
rust 2-m.rs 151ms 2.4ms 1.0MB 267ms 0ms rustc 1.67.0
d 1.d 278ms 0.5ms 3.0MB 267ms 0ms ldc2 1.30.0
d 1.d 318ms 1.4ms 4.4MB 310ms 0ms dmd 2.102.0
rust 2.rs 491ms 0.1ms 1.0MB 480ms 0ms rustc 1.67.0