D VS Rust 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
rust 4.rs 1628ms 114ms 33.8MB 1600ms 10ms rustc 1.61.0
rust 5.rs 1902ms 27ms 33.9MB 1867ms 17ms rustc 1.61.0
rust 3.rs 1939ms 119ms 49.8MB 1910ms 13ms rustc 1.61.0
d 1.d 3653ms 27ms 75.1MB 3940ms 20ms ldc2 1.29.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4.rs 138ms 1.4ms 5.7MB 120ms 0ms rustc 1.61.0
rust 3.rs 166ms 0.5ms 7.7MB 153ms 0ms rustc 1.61.0
rust 5.rs 168ms 1.0ms 5.7MB 160ms 0ms rustc 1.61.0
d 1.d 300ms 2.5ms 15.1MB 290ms 0ms ldc2 1.29.0
d 1.d 469ms 8.4ms 16.3MB 457ms 3ms dmd 2.100.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 915ms 27ms 6.3MB 1760ms 17ms rustc 1.61.0
rust 5-m.rs 1033ms 130ms 5.7MB 1983ms 30ms rustc 1.61.0
rust 3.rs 1831ms 4.5ms 6.5MB 1777ms 37ms rustc 1.61.0
rust 4.rs 3182ms 1.1ms 4.5MB 3170ms 0ms rustc 1.61.0
rust 1-m.rs 3399ms 14ms 5.8MB 6590ms 83ms rustc 1.61.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms ldc2 1.29.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 85ms 15ms 3.0MB 137ms 7ms rustc 1.61.0
rust 3.rs 113ms 0.3ms 3.1MB 100ms 0ms rustc 1.61.0
rust 5-m.rs 120ms 13ms 3.2MB 200ms 0ms rustc 1.61.0
rust 4.rs 208ms 0.2ms 2.7MB 200ms 0ms rustc 1.61.0
rust 1-m.rs 234ms 2.8ms 2.8MB 427ms 7ms rustc 1.61.0
d 1.d 1260ms 1.3ms 8.3MB 1247ms 0ms ldc2 1.29.0
d 1.d 1685ms 3.6ms 11.0MB 1667ms 7ms dmd 2.100.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 129ms 10ms 3.6MB 117ms 0ms rustc 1.61.0
rust 2.rs 538ms 2.3ms 3.6MB 527ms 0ms rustc 1.61.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms ldc2 1.29.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 38ms 0.8ms 2.9MB 30ms 0ms rustc 1.61.0
rust 2.rs 89ms 1.0ms 3.3MB 77ms 0ms rustc 1.61.0
d 1.d 894ms 50ms 6.8MB 883ms 0ms ldc2 1.29.0
d 1.d 1088ms 0.6ms 8.0MB 1073ms 0ms dmd 2.100.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 2.2ms 0.6ms 2.0MB 0ms 0ms rustc 1.63.0
rust 1.rs 2.4ms 0.5ms 0.6MB 0ms 0ms rustc 1.61.0
d 1.d 2.7ms 0.6ms 4.0MB 0ms 0ms dmd 2.100.0
d 1.d 3.3ms 1.9ms 3.0MB 0ms 0ms ldc2 1.29.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 59ms 7.6ms 0.6MB 47ms 0ms rustc 1.61.0
rust 1.rs 77ms 12ms 2.1MB 70ms 0ms rustc 1.61.0
d 1.d 180ms 2.8ms 4.0MB 170ms 0ms ldc2 1.29.0
d 1.d 255ms 0.3ms 4.9MB 240ms 0ms dmd 2.100.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 204ms 28ms 0.6MB 193ms 0ms rustc 1.61.0
rust 1.rs 285ms 29ms 2.2MB 277ms 0ms rustc 1.61.0
d 1.d 527ms 4.1ms 4.1MB 520ms 0ms ldc2 1.29.0
d 1.d 744ms 1.9ms 4.8MB 737ms 0ms dmd 2.100.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 32ms 0.5ms 0.6MB 20ms 0ms rustc 1.61.0
rust 1.rs 40ms 0.9ms 0.7MB 30ms 0ms rustc 1.61.0
d 1.d 76ms 1.8ms 3.8MB 60ms 0ms ldc2 1.29.0
d 1.d 111ms 0.9ms 5.2MB 100ms 0ms dmd 2.100.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 817ms 1.1ms 33.8MB 787ms 10ms rustc 1.61.0
d 1.d 1813ms 8.3ms 74.9MB 1880ms 23ms ldc2 1.29.0
d 1.d 2891ms 117ms 153.4MB 3213ms 47ms dmd 2.100.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 167ms 1.9ms 9.9MB 153ms 0ms rustc 1.61.0
d 1.d 352ms 1.3ms 39.0MB 327ms 13ms ldc2 1.29.0
d 1.d 577ms 23ms 39.9MB 630ms 3ms dmd 2.100.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 188ms 0.3ms 0.6MB 180ms 0ms rustc 1.61.0
rust 7-i.rs 276ms 22ms 0.6MB 263ms 0ms rustc 1.61.0
rust 3.rs 301ms 0.1ms 0.6MB 290ms 0ms rustc 1.63.0
rust 2.rs 337ms 0.4ms 0.6MB 330ms 0ms rustc 1.61.0
rust 1.rs 408ms 10ms 0.6MB 400ms 0ms rustc 1.61.0
d 1.d 463ms 9.0ms 1.2MB 450ms 0ms ldc2 1.29.0
d 2.d 487ms 1.8ms 1.2MB 473ms 0ms ldc2 1.29.0
d 1.d 1093ms 2.5ms 1.9MB 1080ms 0ms dmd 2.100.0
d 2.d 2903ms 0.8ms 2.0MB 2890ms 0ms dmd 2.100.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 23ms 0.4ms 0.6MB 10ms 0ms rustc 1.61.0
rust 7-i.rs 27ms 0.1ms 0.6MB 20ms 0ms rustc 1.61.0
rust 3.rs 32ms 1.3ms 0.6MB 20ms 0ms rustc 1.63.0
rust 2.rs 36ms 2.0ms 0.6MB 30ms 0ms rustc 1.61.0
rust 1.rs 41ms 2.7ms 2.1MB 30ms 0ms rustc 1.61.0
d 1.d 51ms 0.7ms 1.2MB 40ms 0ms ldc2 1.29.0
d 2.d 52ms 0.3ms 1.2MB 40ms 0ms ldc2 1.29.0
d 1.d 127ms 0.4ms 2.0MB 120ms 0ms dmd 2.100.0
d 2.d 260ms 0.6ms 1.9MB 250ms 0ms dmd 2.100.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 460ms 2.0ms 6.6MB 440ms 0ms rustc 1.61.0
d 2.d 868ms 1.3ms 48.8MB 837ms 13ms ldc2 1.29.0
rust 1.rs 1182ms 8.4ms 40.9MB 1157ms 7ms rustc 1.61.0
d 1.d 1293ms 6.4ms 44.0MB 1260ms 13ms ldc2 1.29.0
d 1.d 1304ms 41ms 75.1MB 1273ms 13ms dmd 2.100.0
d 2.d 1728ms 2.6ms 49.2MB 1700ms 13ms dmd 2.100.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 105ms 1.2ms 3.2MB 90ms 0ms rustc 1.61.0
d 1.d 124ms 3.7ms 14.2MB 113ms 0ms ldc2 1.29.0
rust 1.rs 127ms 0.8ms 11.7MB 110ms 0ms rustc 1.61.0
d 1.d 145ms 1.6ms 23.6MB 127ms 3ms dmd 2.100.0
d 2.d 205ms 0.2ms 15.2MB 187ms 3ms ldc2 1.29.0
d 2.d 430ms 0.4ms 15.9MB 410ms 7ms dmd 2.100.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 1740ms 1.0ms 2.9MB 1573ms 147ms rustc 1.61.0
rust 2.rs 1804ms 7.3ms 2.7MB 1733ms 60ms rustc 1.61.0
d 1.d 3485ms 3.3ms 7.8MB 3513ms 30ms ldc2 1.29.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 375ms 1.1ms 2.7MB 353ms 7ms rustc 1.61.0
rust 2.rs 408ms 1.2ms 2.5MB 400ms 0ms rustc 1.61.0
d 1.d 833ms 2.2ms 8.0MB 830ms 0ms ldc2 1.29.0
d 1.d 1380ms 91ms 8.8MB 1380ms 0ms dmd 2.100.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 872ms 1.5ms 2.6MB 1613ms 3ms rustc 1.63.0
rust 7-m.rs 893ms 2.6ms 2.2MB 1717ms 0ms rustc 1.61.0
rust 8.rs 1518ms 1.1ms 2.5MB 1510ms 0ms rustc 1.63.0
rust 2-m.rs 1706ms 54ms 2.1MB 3290ms 7ms rustc 1.61.0
rust 7.rs 1722ms 3.0ms 2.2MB 1710ms 0ms rustc 1.61.0
d 1.d 3889ms 1.5ms 3.8MB 3877ms 0ms ldc2 1.29.0
d 1.d 4416ms 24ms 4.6MB 4400ms 0ms dmd 2.100.0
rust 2.rs timeout 0.0ms 0.0MB 0ms 0ms rustc 1.61.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 220ms 6.5ms 2.4MB 397ms 0ms rustc 1.63.0
rust 7-m.rs 233ms 1.5ms 0.7MB 423ms 0ms rustc 1.61.0
rust 7.rs 416ms 29ms 0.6MB 403ms 0ms rustc 1.61.0
rust 8.rs 432ms 0.5ms 2.2MB 420ms 0ms rustc 1.63.0
rust 2-m.rs 435ms 7.8ms 2.3MB 820ms 0ms rustc 1.61.0
d 1.d 977ms 1.0ms 3.6MB 963ms 0ms ldc2 1.29.0
d 1.d 1104ms 0.1ms 4.5MB 1093ms 0ms dmd 2.100.0
rust 2.rs 1371ms 0.7ms 0.6MB 1360ms 0ms rustc 1.61.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 60ms 1.7ms 2.3MB 100ms 0ms rustc 1.63.0
rust 7-m.rs 64ms 0.6ms 0.7MB 100ms 0ms rustc 1.61.0
rust 7.rs 103ms 7.6ms 0.6MB 93ms 0ms rustc 1.61.0
rust 8.rs 107ms 6.1ms 2.2MB 97ms 0ms rustc 1.63.0
rust 2-m.rs 115ms 3.3ms 0.7MB 200ms 0ms rustc 1.61.0
d 1.d 248ms 1.6ms 3.2MB 233ms 0ms ldc2 1.29.0
d 1.d 281ms 1.1ms 3.9MB 270ms 0ms dmd 2.100.0
rust 2.rs 391ms 0.6ms 0.6MB 380ms 0ms rustc 1.61.0