D VS Javascript benchmarks

Current benchmark data was generated on Sat Jan 28 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
javascript 1.js 1250ms 7.2ms 244.6MB 1580ms 50ms bun 0.5.1
d 1.d 3074ms 49ms 75.1MB 3313ms 13ms ldc2 1.30.0
javascript 1.js 3580ms 51ms 262.3MB 2593ms 1213ms node 19.5.0
d 1.d 4033ms 80ms 185.0MB 4573ms 23ms dmd 2.101.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 120ms 5.4ms 103.9MB 103ms 13ms bun 0.5.1
javascript 1.js 165ms 1.7ms 69.5MB 153ms 17ms node 19.5.0
d 1.d 271ms 8.3ms 15.2MB 263ms 0ms ldc2 1.30.0
d 1.d 332ms 4.3ms 26.5MB 340ms 0ms dmd 2.101.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2275ms 38ms 81.0MB 2327ms 30ms node 19.5.0
javascript 1.js 3607ms 97ms 108.9MB 3583ms 27ms bun 0.5.1
d 1.d timeout 0.0ms 14.6MB 4980ms 3ms dmd 2.101.2
d 1.d timeout 0.0ms 14.2MB 4970ms 10ms ldc2 1.30.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 212ms 5.6ms 62.5MB 187ms 13ms node 19.5.0
javascript 1.js 258ms 5.7ms 103.5MB 263ms 17ms bun 0.5.1
d 1.d 1305ms 1.7ms 8.1MB 1293ms 3ms ldc2 1.30.0
d 1.d 1625ms 1.7ms 9.1MB 1610ms 0ms dmd 2.101.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 400ms 10ms 99.9MB 380ms 13ms bun 0.5.1
javascript 1.js 403ms 0.2ms 59.4MB 407ms 20ms node 19.5.0
d 1.d 3852ms 9.9ms 8.0MB 3840ms 0ms ldc2 1.30.0
d 1.d 4481ms 0.4ms 8.9MB 4470ms 0ms dmd 2.101.2

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 183ms 1.0ms 52.9MB 190ms 3ms node 19.5.0
javascript 1.js 414ms 0.3ms 87.6MB 400ms 10ms bun 0.5.1
d 1.d 659ms 0.7ms 7.0MB 650ms 0ms ldc2 1.30.0
d 1.d 815ms 4.8ms 8.5MB 803ms 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.d 4276ms 15ms 1.5MB 4260ms 0ms ldc2 1.30.0
d 1-im.d 4815ms 15ms 1.5MB 9373ms 0ms ldc2 1.30.0
d 1-i.d timeout 0.0ms 1.9MB 4990ms 0ms dmd 2.101.2
d 1-im.d timeout 0.0ms 4.1MB 9823ms 0ms dmd 2.101.2
d 1.d timeout 0.0ms 2.4MB 4990ms 0ms dmd 2.101.2
d 2-i.d timeout 0.0ms 2.3MB 4987ms 0ms dmd 2.101.2
d 2-im.d timeout 0.0ms 4.1MB 9853ms 7ms dmd 2.101.2
d 1-i.d timeout 0.0ms 1.5MB 4987ms 0ms ldc2 1.30.0
d 2-i.d timeout 0.0ms 1.6MB 4987ms 0ms ldc2 1.30.0
d 2-im.d timeout 0.0ms 1.6MB 9873ms 0ms ldc2 1.30.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 360ms 5.9ms 1.6MB 347ms 0ms ldc2 1.30.0
d 1-im.d 402ms 5.3ms 1.5MB 767ms 0ms ldc2 1.30.0
d 1.d 439ms 0.9ms 2.4MB 430ms 0ms dmd 2.101.2
d 1-im.d 489ms 3.3ms 4.0MB 923ms 0ms dmd 2.101.2
d 1-i.d 763ms 5.4ms 1.5MB 753ms 0ms ldc2 1.30.0
d 2-im.d 773ms 1.1ms 1.5MB 1470ms 3ms ldc2 1.30.0
d 2-im.d 856ms 50ms 2.3MB 1607ms 0ms dmd 2.101.2
d 1-i.d 857ms 0.7ms 1.9MB 847ms 0ms dmd 2.101.2
d 2-i.d 1451ms 0.8ms 1.5MB 1440ms 0ms ldc2 1.30.0
d 2-i.d 1507ms 0.9ms 2.3MB 1497ms 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 235ms 7.0ms 28.5MB 217ms 7ms ldc2 1.30.0
d 1.d 793ms 2.2ms 40.3MB 773ms 7ms dmd 2.101.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 28ms 1.8ms 7.4MB 17ms 0ms ldc2 1.30.0
d 1.d 82ms 0.7ms 9.2MB 70ms 0ms dmd 2.101.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 2.1ms 0.6ms 3.0MB 0ms 0ms ldc2 1.30.0
d 1.d 2.3ms 0.6ms 4.0MB 0ms 0ms dmd 2.101.2
javascript 1.js 15ms 0.5ms 49.9MB 0ms 0ms bun 0.5.1
javascript 1.js 43ms 0.8ms 44.8MB 28ms 4ms node 19.5.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 1060ms 13ms 60.6MB 1837ms 17ms ldc2 1.30.0
d 1-m.d 4045ms 73ms 55.9MB 7203ms 20ms 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 134ms 5.8ms 39.2MB 220ms 3ms ldc2 1.30.0
d 1-m.d 419ms 16ms 42.4MB 757ms 3ms dmd 2.101.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 177ms 2.8ms 3.7MB 170ms 0ms ldc2 1.30.0
d 1.d 253ms 1.6ms 4.9MB 240ms 0ms dmd 2.101.2
javascript 2.js 376ms 2.0ms 54.6MB 363ms 3ms node 19.5.0
javascript 1.js 558ms 5.7ms 142.4MB 547ms 30ms bun 0.5.1
javascript 2.js 792ms 5.3ms 109.3MB 800ms 13ms bun 0.5.1
javascript 1.js 1034ms 5.1ms 61.8MB 1013ms 10ms node 19.5.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 520ms 1.8ms 5.7MB 510ms 0ms ldc2 1.30.0
d 1.d 748ms 2.3ms 4.9MB 737ms 0ms dmd 2.101.2
javascript 2.js 1014ms 6.1ms 61.5MB 990ms 17ms node 19.5.0
javascript 1.js 1587ms 8.0ms 164.9MB 1607ms 23ms bun 0.5.1
javascript 2.js 2293ms 13ms 120.6MB 2303ms 10ms bun 0.5.1
javascript 1.js 2965ms 7.7ms 62.1MB 2940ms 17ms node 19.5.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 75ms 0.7ms 3.6MB 63ms 0ms ldc2 1.30.0
d 1.d 112ms 2.5ms 4.7MB 103ms 0ms dmd 2.101.2
javascript 2.js 203ms 3.7ms 49.1MB 193ms 3ms node 19.5.0
javascript 1.js 296ms 6.1ms 117.4MB 287ms 17ms bun 0.5.1
javascript 1.js 376ms 2.1ms 49.6MB 367ms 3ms node 19.5.0
javascript 2.js 429ms 10ms 102.0MB 440ms 17ms bun 0.5.1

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 689ms 1.8ms 7.2MB 680ms 0ms ldc2 1.30.0
d 1.d 2757ms 4.3ms 6.7MB 2747ms 0ms dmd 2.101.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 45ms 23ms 3.0MB 33ms 0ms ldc2 1.30.0
d 1.d 117ms 0.7ms 3.4MB 110ms 0ms dmd 2.101.2

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 735ms 6.0ms 153.3MB 813ms 30ms bun 0.5.1
javascript 1.js 784ms 10ms 121.8MB 803ms 43ms node 19.5.0
d 1.d 1414ms 25ms 74.8MB 1473ms 10ms ldc2 1.30.0
d 1.d 2411ms 15ms 153.5MB 2713ms 17ms dmd 2.101.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 169ms 5.3ms 104.0MB 147ms 23ms bun 0.5.1
javascript 1.js 230ms 5.3ms 90.0MB 203ms 37ms node 19.5.0
d 1.d 261ms 3.6ms 38.8MB 243ms 7ms ldc2 1.30.0
d 1.d 479ms 2.4ms 40.1MB 510ms 3ms dmd 2.101.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 409ms 1.3ms 1.5MB 400ms 0ms ldc2 1.30.0
d 2.d 422ms 0.1ms 1.5MB 410ms 0ms ldc2 1.30.0
javascript 6.js 606ms 7.3ms 47.3MB 593ms 0ms node 19.5.0
javascript 6.js 1009ms 0.7ms 68.0MB 1000ms 10ms bun 0.5.1
d 1.d 1535ms 4.6ms 2.3MB 1523ms 0ms dmd 2.101.2
d 2.d 2861ms 4.3ms 2.3MB 2850ms 0ms dmd 2.101.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 43ms 0.4ms 1.6MB 33ms 0ms ldc2 1.30.0
d 2.d 45ms 0.1ms 1.5MB 37ms 0ms ldc2 1.30.0
javascript 6.js 107ms 2.6ms 47.4MB 93ms 3ms node 19.5.0
javascript 6.js 121ms 0.7ms 61.9MB 113ms 7ms bun 0.5.1
d 1.d 156ms 0.5ms 2.3MB 150ms 0ms dmd 2.101.2
d 2.d 290ms 0.5ms 2.4MB 280ms 0ms dmd 2.101.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 602ms 26ms 42.4MB 583ms 3ms ldc2 1.30.0
d 1.d 675ms 8.3ms 75.0MB 650ms 10ms dmd 2.101.2
d 2.d 862ms 4.4ms 48.3MB 833ms 10ms ldc2 1.30.0
d 2.d 1571ms 2.0ms 48.6MB 1550ms 7ms dmd 2.101.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 125ms 0.4ms 14.4MB 110ms 0ms ldc2 1.30.0
d 1.d 140ms 1.6ms 23.0MB 123ms 0ms dmd 2.101.2
d 2.d 208ms 1.9ms 15.1MB 190ms 0ms ldc2 1.30.0
d 2.d 391ms 0.9ms 15.6MB 380ms 0ms dmd 2.101.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3481ms 14ms 7.8MB 3460ms 13ms ldc2 1.30.0
d 1.d timeout 0.0ms 8.8MB 4980ms 17ms dmd 2.101.2
javascript 3.js timeout 0.0ms 79.0MB 4980ms 20ms node 19.5.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 826ms 2.3ms 7.7MB 813ms 3ms ldc2 1.30.0
javascript 3.js 1552ms 2.5ms 62.3MB 1543ms 17ms node 19.5.0
d 1.d 1659ms 2.9ms 8.9MB 1647ms 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 815ms 1.9ms 165.8MB 1023ms 47ms ldc2 1.30.0
d 3.d 1647ms 5.7ms 171.3MB 1887ms 30ms dmd 2.101.2

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 86ms 1.3ms 23.7MB 100ms 0ms ldc2 1.30.0
d 3.d 176ms 2.9ms 27.3MB 190ms 0ms dmd 2.101.2

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 3026ms 3.2ms 102.2MB 3037ms 27ms bun 0.5.1
javascript 1.js 3297ms 5.2ms 51.4MB 3300ms 10ms node 19.5.0
d 1.d timeout 0.0ms 5.0MB 4983ms 3ms dmd 2.101.2
d 1.d timeout 0.0ms 3.7MB 4987ms 7ms ldc2 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 785ms 4.4ms 106.8MB 790ms 17ms bun 0.5.1
javascript 1.js 872ms 6.1ms 50.0MB 873ms 3ms node 19.5.0
d 1.d 1436ms 5.6ms 3.8MB 1423ms 0ms ldc2 1.30.0
d 1.d 3361ms 19ms 5.0MB 3350ms 0ms dmd 2.101.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2751ms 43ms 68.9MB 5193ms 17ms node 19.5.0
d 1.d 4289ms 1.5ms 3.9MB 4280ms 0ms ldc2 1.30.0
d 1.d 4784ms 5.5ms 4.8MB 4773ms 0ms dmd 2.101.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 835ms 6.6ms 68.8MB 1467ms 23ms node 19.5.0
d 1.d 1078ms 5.2ms 3.4MB 1067ms 0ms ldc2 1.30.0
d 1.d 1198ms 0.8ms 4.3MB 1190ms 0ms dmd 2.101.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 271ms 0.7ms 3.0MB 260ms 0ms ldc2 1.30.0
d 1.d 302ms 0.4ms 4.1MB 290ms 0ms dmd 2.101.2
javascript 6.js 404ms 15ms 66.5MB 533ms 23ms node 19.5.0