D VS Javascript benchmarks

Current benchmark data was generated on Mon Oct 03 2022, 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
javascript 1.js 1265ms 5.0ms 244.3MB 1590ms 47ms bun 0.1.13
d 1.d 3016ms 25ms 75.2MB 3230ms 23ms ldc2 1.30.0
javascript 1.js 3035ms 663ms 359.9MB 2487ms 933ms node 18.10.0
d 1.d 4680ms 29ms 124.4MB 4780ms 17ms dmd 2.100.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 118ms 2.2ms 98.0MB 107ms 13ms bun 0.1.13
javascript 1.js 201ms 4.3ms 84.2MB 180ms 20ms node 18.10.0
d 1.d 266ms 5.5ms 15.2MB 253ms 0ms ldc2 1.30.0
d 1.d 380ms 9.7ms 16.2MB 370ms 0ms dmd 2.100.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2337ms 24ms 81.3MB 2373ms 47ms node 18.10.0
javascript 1.js 3545ms 74ms 109.4MB 3570ms 23ms bun 0.1.13
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.2
d 1.d timeout 0.0ms 0.0MB 0ms 0ms ldc2 1.30.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 225ms 2.2ms 61.9MB 210ms 10ms node 18.10.0
javascript 1.js 254ms 2.7ms 100.1MB 270ms 13ms bun 0.1.13
d 1.d 1304ms 23ms 8.5MB 1287ms 0ms ldc2 1.30.0
d 1.d 1628ms 5.5ms 9.4MB 1610ms 3ms dmd 2.100.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3826ms 3.2ms 7.9MB 3817ms 0ms ldc2 1.30.0
d 1.d 4475ms 0.9ms 8.8MB 4463ms 0ms dmd 2.100.2

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 656ms 1.6ms 7.8MB 643ms 0ms ldc2 1.30.0
d 1.d 813ms 2.0ms 8.7MB 797ms 3ms dmd 2.100.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 203ms 0.5ms 27.7MB 180ms 10ms ldc2 1.30.0
d 1.d 767ms 1.9ms 46.9MB 753ms 7ms dmd 2.100.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 24ms 0.5ms 7.2MB 13ms 0ms ldc2 1.30.0
d 1.d 81ms 0.7ms 12.5MB 70ms 0ms dmd 2.100.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 2.3ms 0.6ms 3.0MB 0ms 0ms ldc2 1.30.0
d 1.d 2.5ms 0.8ms 4.0MB 0ms 0ms dmd 2.100.2
javascript 1.js 17ms 2.4ms 52.6MB 10ms 0ms bun 0.1.13
javascript 1.js 56ms 0.8ms 42.1MB 40ms 2ms node 18.10.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 179ms 0.8ms 4.1MB 170ms 0ms ldc2 1.30.0
d 1.d 245ms 1.5ms 4.9MB 237ms 0ms dmd 2.100.2
javascript 2.js 523ms 5.3ms 107.6MB 517ms 23ms bun 0.1.13
javascript 1.js 553ms 2.4ms 148.4MB 557ms 13ms bun 0.1.13
javascript 2.js 792ms 3.7ms 60.7MB 763ms 17ms node 18.10.0
javascript 1.js 1145ms 5.0ms 61.5MB 1113ms 20ms node 18.10.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 526ms 1.0ms 4.0MB 520ms 0ms ldc2 1.30.0
d 1.d 722ms 0.5ms 5.0MB 713ms 0ms dmd 2.100.2
javascript 2.js 1508ms 2.5ms 104.2MB 1513ms 17ms bun 0.1.13
javascript 1.js 1588ms 8.2ms 172.8MB 1613ms 30ms bun 0.1.13
javascript 2.js 2202ms 18ms 63.0MB 2180ms 20ms node 18.10.0
javascript 1.js 3262ms 5.5ms 61.7MB 3240ms 17ms node 18.10.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 78ms 0.1ms 4.2MB 70ms 0ms ldc2 1.30.0
d 1.d 106ms 0.3ms 4.7MB 97ms 0ms dmd 2.100.2
javascript 2.js 266ms 2.2ms 96.0MB 257ms 17ms bun 0.1.13
javascript 1.js 280ms 1.9ms 113.7MB 280ms 13ms bun 0.1.13
javascript 2.js 415ms 3.4ms 50.6MB 403ms 3ms node 18.10.0
javascript 1.js 449ms 5.1ms 49.6MB 430ms 0ms node 18.10.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 574ms 0.5ms 7.0MB 560ms 0ms ldc2 1.30.0
d 1.d 2509ms 1.2ms 6.9MB 2497ms 0ms dmd 2.100.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 27ms 0.2ms 2.9MB 20ms 0ms ldc2 1.30.0
d 1.d 107ms 0.3ms 3.4MB 97ms 0ms dmd 2.100.2

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 755ms 12ms 157.4MB 853ms 30ms bun 0.1.13
javascript 1.js 804ms 2.4ms 121.5MB 813ms 53ms node 18.10.0
d 1.d 1405ms 17ms 75.1MB 1467ms 7ms ldc2 1.30.0
d 1.d 2623ms 16ms 153.4MB 2913ms 33ms dmd 2.100.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 171ms 2.7ms 106.6MB 160ms 17ms bun 0.1.13
javascript 1.js 249ms 2.4ms 88.9MB 240ms 20ms node 18.10.0
d 1.d 277ms 1.6ms 38.9MB 260ms 7ms ldc2 1.30.0
d 1.d 543ms 1.1ms 40.0MB 580ms 3ms dmd 2.100.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 425ms 0.3ms 1.2MB 420ms 0ms ldc2 1.30.0
d 2.d 435ms 0.7ms 1.2MB 427ms 0ms ldc2 1.30.0
javascript 6.js 622ms 7.0ms 47.2MB 603ms 7ms node 18.10.0
javascript 6.js 1030ms 27ms 66.5MB 1023ms 7ms bun 0.1.13
d 1.d 1533ms 0.7ms 1.9MB 1520ms 0ms dmd 2.100.2
d 2.d 2679ms 1.8ms 2.0MB 2663ms 0ms dmd 2.100.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 46ms 0.6ms 1.2MB 37ms 0ms ldc2 1.30.0
d 2.d 47ms 0.3ms 1.2MB 40ms 0ms ldc2 1.30.0
javascript 6.js 123ms 0.2ms 47.2MB 107ms 7ms node 18.10.0
javascript 6.js 128ms 5.6ms 67.2MB 117ms 10ms bun 0.1.13
d 1.d 157ms 0.5ms 2.0MB 150ms 0ms dmd 2.100.2
d 2.d 271ms 0.7ms 1.9MB 257ms 0ms dmd 2.100.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 618ms 34ms 43.8MB 597ms 10ms ldc2 1.30.0
d 1.d 739ms 71ms 75.2MB 717ms 7ms dmd 2.100.2
d 2.d 860ms 2.3ms 48.6MB 837ms 7ms ldc2 1.30.0
d 2.d 1638ms 0.3ms 78.7MB 1613ms 7ms dmd 2.100.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 128ms 1.2ms 13.9MB 110ms 0ms ldc2 1.30.0
d 1.d 140ms 3.9ms 23.5MB 127ms 0ms dmd 2.100.2
d 2.d 204ms 0.6ms 14.9MB 190ms 0ms ldc2 1.30.0
d 2.d 408ms 0.5ms 16.5MB 393ms 0ms dmd 2.100.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3411ms 0.5ms 7.9MB 3410ms 13ms ldc2 1.30.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.2
javascript 3.js timeout 0.0ms 0.0MB 0ms 0ms node 18.10.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 807ms 2.2ms 7.9MB 800ms 3ms ldc2 1.30.0
javascript 3.js 1602ms 6.2ms 63.3MB 1587ms 13ms node 18.10.0
d 1.d 1681ms 5.7ms 8.9MB 1670ms 7ms dmd 2.100.2

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2933ms 4.0ms 101.0MB 2953ms 23ms bun 0.1.13
javascript 1.js 3542ms 52ms 52.1MB 3547ms 17ms node 18.10.0
d 1.d timeout 0.0ms 0.0MB 0ms 0ms dmd 2.100.2
d 1.d timeout 0.0ms 0.0MB 0ms 0ms ldc2 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 761ms 7.1ms 104.6MB 757ms 27ms bun 0.1.13
javascript 1.js 937ms 4.7ms 50.7MB 933ms 13ms node 18.10.0
d 1.d 1455ms 3.6ms 3.8MB 1450ms 0ms ldc2 1.30.0
d 1.d 3193ms 0.9ms 5.1MB 3190ms 0ms dmd 2.100.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2766ms 1.8ms 71.4MB 5200ms 23ms node 18.10.0
d 1.d 4594ms 1.9ms 3.8MB 4577ms 0ms ldc2 1.30.0
d 1.d 4786ms 8.0ms 4.5MB 4770ms 0ms dmd 2.100.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 862ms 8.2ms 70.8MB 1520ms 17ms node 18.10.0
d 1.d 1152ms 0.8ms 3.6MB 1140ms 0ms ldc2 1.30.0
d 1.d 1201ms 3.5ms 4.4MB 1190ms 0ms dmd 2.100.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 292ms 0.4ms 3.4MB 277ms 0ms ldc2 1.30.0
d 1.d 303ms 0.6ms 4.2MB 290ms 0ms dmd 2.100.2
javascript 6-m.js 398ms 6.9ms 69.1MB 583ms 20ms node 18.10.0