D VS Javascript benchmarks

Current benchmark data was generated on Sun Dec 01 2024, 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
javascript 1-m.js 934ms 12ms 179.4MB 1463ms 247ms bun 1.1.38
javascript 1-m.js 1245ms 11ms 292.8MB 2167ms 173ms node 23.3.0
d 1.d 1733ms 100ms 312.5MB 1707ms 33ms ldc2 1.39.0
d 1.d 2677ms 15ms 314.4MB 2853ms 47ms dmd 2.109.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 95ms 0.9ms 78.8MB 67ms 30ms bun 1.1.38
javascript 1.js 124ms 1.3ms 82.1MB 123ms 20ms node 23.3.0
d 1.d 157ms 1.1ms 208.7MB 130ms 13ms ldc2 1.39.0
d 1.d 235ms 9.2ms 209.9MB 203ms 13ms dmd 2.109.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 1579ms 4.5ms 93.9MB 1667ms 47ms node 23.3.0
javascript 1.js 2164ms 25ms 99.8MB 2190ms 60ms bun 1.1.38
d 1.d timeout 0.0ms 16.1MB 4970ms 20ms dmd 2.109.1
d 1.d timeout 0.0ms 15.5MB 4960ms 27ms ldc2 1.39.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 155ms 1.6ms 76.4MB 140ms 23ms node 23.3.0
javascript 1.js 180ms 1.0ms 85.4MB 213ms 17ms bun 1.1.38
d 1.d 1034ms 18ms 8.4MB 1010ms 10ms ldc2 1.39.0
d 1.d 1318ms 12ms 10.6MB 1300ms 7ms dmd 2.109.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 275ms 2.6ms 66.4MB 273ms 37ms node 23.3.0
javascript 1.js 651ms 2.3ms 77.2MB 620ms 27ms bun 1.1.38
d 1.d 2550ms 21ms 8.0MB 2537ms 0ms ldc2 1.39.0
d 1.d 2923ms 8.2ms 10.5MB 2910ms 10ms dmd 2.109.1

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 125ms 1.1ms 65.4MB 143ms 13ms node 23.3.0
d 1.d 439ms 0.9ms 8.1MB 423ms 0ms ldc2 1.39.0
d 1.d 534ms 2.0ms 10.2MB 523ms 0ms dmd 2.109.1
javascript 1.js 549ms 51ms 67.0MB 523ms 20ms bun 1.1.38

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 399ms 45ms 5.1MB 1410ms 0ms ldc2 1.39.0
d 2-im.d 1114ms 10ms 5.1MB 4297ms 0ms ldc2 1.39.0
d 1-i.d 1488ms 14ms 2.9MB 1480ms 0ms ldc2 1.39.0
d 1.d 3139ms 35ms 2.9MB 3130ms 0ms ldc2 1.39.0
d 2-i.d 3221ms 2.5ms 2.9MB 3210ms 0ms ldc2 1.39.0
d 1.d 3537ms 17ms 4.6MB 3523ms 0ms dmd 2.109.1
d 1-im.d 4241ms 40ms 8.9MB 16490ms 7ms dmd 2.109.1
d 1-i.d timeout 0.0ms 4.5MB 4987ms 0ms dmd 2.109.1
d 2-i.d timeout 0.0ms 4.6MB 4990ms 0ms dmd 2.109.1
d 2-im.d timeout 0.0ms 6.8MB 19780ms 7ms dmd 2.109.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 40ms 1.9ms 5.1MB 110ms 0ms ldc2 1.39.0
d 2-im.d 110ms 20ms 6.9MB 337ms 3ms ldc2 1.39.0
d 1-i.d 124ms 0.4ms 2.8MB 110ms 0ms ldc2 1.39.0
d 1.d 263ms 2.2ms 2.8MB 253ms 0ms ldc2 1.39.0
d 2-i.d 266ms 0.8ms 2.8MB 260ms 0ms ldc2 1.39.0
d 1.d 296ms 2.0ms 4.5MB 287ms 0ms dmd 2.109.1
d 1-im.d 359ms 0.1ms 8.9MB 1343ms 0ms dmd 2.109.1
d 2-im.d 545ms 24ms 6.8MB 1990ms 0ms dmd 2.109.1
d 1-i.d 860ms 8.9ms 4.5MB 850ms 0ms dmd 2.109.1
d 2-i.d 1389ms 18ms 4.5MB 1377ms 0ms dmd 2.109.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 196ms 1.3ms 33.2MB 177ms 7ms ldc2 1.39.0
d 1.d 620ms 0.6ms 51.0MB 610ms 0ms dmd 2.109.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 24ms 0.1ms 8.1MB 20ms 0ms ldc2 1.39.0
d 1.d 67ms 1.4ms 10.1MB 53ms 7ms dmd 2.109.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1.4ms 0.8ms 3.0MB 0ms 0ms ldc2 1.39.0
d 1.d 2.2ms 0.4ms 5.0MB 0ms 0ms dmd 2.109.1
javascript 1.js 12ms 0.4ms 31.8MB 0ms 10ms bun 1.1.38
javascript 1.js 31ms 0.3ms 51.9MB 16ms 4ms node 23.3.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 59ms 0.4ms 15.7MB 57ms 3ms ldc2 1.39.0
javascript 1.js 83ms 0.8ms 65.6MB 53ms 20ms bun 1.1.38
javascript 1.js 131ms 12ms 78.8MB 113ms 20ms node 23.3.0
d 2.d 238ms 0.6ms 22.7MB 243ms 7ms dmd 2.109.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 381ms 3.3ms 206.8MB 340ms 87ms bun 1.1.38
d 2.d 470ms 2.4ms 141.5MB 433ms 37ms ldc2 1.39.0
javascript 1.js 750ms 34ms 209.9MB 837ms 80ms node 23.3.0
d 2.d 2491ms 23ms 161.0MB 2517ms 23ms dmd 2.109.1

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 715ms 16ms 51.1MB 2293ms 20ms ldc2 1.39.0
d 1-m.d 1907ms 5.2ms 61.4MB 5853ms 10ms dmd 2.109.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 127ms 22ms 43.7MB 313ms 7ms ldc2 1.39.0
d 1-m.d 223ms 7.0ms 43.9MB 627ms 17ms dmd 2.109.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 125ms 0.6ms 5.8MB 117ms 3ms ldc2 1.39.0
d 1.d 181ms 0.7ms 7.8MB 170ms 3ms dmd 2.109.1
javascript 2.js 307ms 1.5ms 66.6MB 293ms 17ms node 23.3.0
javascript 1.js 556ms 4.1ms 64.6MB 543ms 7ms node 23.3.0
javascript 2.js 654ms 2.5ms 122.6MB 690ms 73ms bun 1.1.38
javascript 1.js 879ms 2.7ms 110.8MB 957ms 87ms bun 1.1.38

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 359ms 0.1ms 5.8MB 350ms 10ms ldc2 1.39.0
d 1.d 531ms 3.4ms 8.1MB 510ms 20ms dmd 2.109.1
javascript 2.js 850ms 3.9ms 71.8MB 830ms 23ms node 23.3.0
javascript 1.js 1581ms 2.8ms 71.0MB 1560ms 17ms node 23.3.0
javascript 2.js 1821ms 23ms 122.0MB 1977ms 60ms bun 1.1.38
javascript 1.js 2555ms 37ms 110.8MB 2857ms 143ms bun 1.1.38

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 55ms 0.6ms 5.9MB 50ms 0ms ldc2 1.39.0
d 1.d 81ms 0.9ms 7.9MB 73ms 0ms dmd 2.109.1
javascript 2.js 166ms 2.5ms 60.1MB 163ms 3ms node 23.3.0
javascript 1.js 172ms 16ms 61.8MB 157ms 10ms node 23.3.0
javascript 1.js 323ms 4.0ms 119.0MB 360ms 73ms bun 1.1.38
javascript 2.js 352ms 4.1ms 125.4MB 380ms 47ms bun 1.1.38

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 407ms 2.1ms 6.7MB 390ms 0ms ldc2 1.39.0
d 1.d 2343ms 397ms 9.3MB 2330ms 0ms dmd 2.109.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 20ms 0.3ms 3.0MB 10ms 0ms ldc2 1.39.0
d 1.d 91ms 1.2ms 4.5MB 80ms 0ms dmd 2.109.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 510ms 1.8ms 138.7MB 657ms 147ms bun 1.1.38
javascript 1.js 538ms 0.3ms 134.0MB 627ms 60ms node 23.3.0
d 1.d 945ms 3.3ms 312.5MB 900ms 43ms ldc2 1.39.0
d 1.d 1727ms 10ms 314.5MB 1840ms 57ms dmd 2.109.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 124ms 3.0ms 86.3MB 103ms 37ms bun 1.1.38
javascript 1.js 162ms 1.2ms 101.8MB 160ms 37ms node 23.3.0
d 1.d 195ms 0.7ms 312.7MB 153ms 30ms ldc2 1.39.0
d 1.d 338ms 0.9ms 314.8MB 293ms 33ms dmd 2.109.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 360ms 1.4ms 2.8MB 347ms 0ms ldc2 1.39.0
d 1.d 360ms 1.1ms 2.9MB 350ms 0ms ldc2 1.39.0
javascript 6.js 460ms 5.9ms 59.6MB 447ms 7ms node 23.3.0
javascript 6.js 672ms 15ms 44.9MB 667ms 3ms bun 1.1.38
d 1.d 679ms 3.1ms 4.6MB 667ms 0ms dmd 2.109.1
d 2.d 2034ms 49ms 4.6MB 2023ms 0ms dmd 2.109.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 39ms 0.2ms 2.9MB 30ms 0ms ldc2 1.39.0
d 2.d 39ms 0.1ms 2.8MB 30ms 0ms ldc2 1.39.0
d 1.d 71ms 0.3ms 4.6MB 60ms 0ms dmd 2.109.1
javascript 6.js 77ms 1.7ms 59.5MB 67ms 3ms node 23.3.0
javascript 6.js 87ms 1.8ms 44.9MB 80ms 10ms bun 1.1.38
d 2.d 208ms 1.2ms 4.6MB 200ms 0ms dmd 2.109.1

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 315ms 3.8ms 77.2MB 293ms 0ms dmd 2.109.1
d 1.d 320ms 5.7ms 43.7MB 293ms 10ms ldc2 1.39.0
d 2.d 817ms 3.4ms 47.7MB 800ms 3ms ldc2 1.39.0
d 2.d 1161ms 3.7ms 49.3MB 1140ms 3ms dmd 2.109.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 65ms 1.0ms 13.7MB 53ms 0ms ldc2 1.39.0
d 1.d 67ms 1.7ms 24.0MB 57ms 0ms dmd 2.109.1
d 2.d 206ms 0.2ms 15.7MB 193ms 0ms ldc2 1.39.0
d 2.d 291ms 1.2ms 17.6MB 277ms 3ms dmd 2.109.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 2406ms 16ms 7.9MB 2367ms 377ms ldc2 1.39.0
d 1.d 4355ms 15ms 10.1MB 4377ms 377ms dmd 2.109.1
javascript 3.js 4746ms 11ms 91.6MB 4717ms 33ms node 23.3.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 585ms 12ms 8.1MB 567ms 120ms ldc2 1.39.0
javascript 3.js 1029ms 1.4ms 74.0MB 1013ms 17ms node 23.3.0
d 1.d 1036ms 3.9ms 10.2MB 1010ms 113ms dmd 2.109.1

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 646ms 60ms 170.7MB 847ms 20ms ldc2 1.39.0
d 3.d 1336ms 1.5ms 173.4MB 1517ms 23ms dmd 2.109.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 71ms 4.6ms 26.6MB 80ms 3ms ldc2 1.39.0
d 3.d 144ms 4.9ms 28.3MB 153ms 0ms dmd 2.109.1

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2575ms 12ms 63.5MB 2577ms 20ms node 23.3.0
javascript 1.js 2795ms 11ms 84.3MB 2807ms 53ms bun 1.1.38
d 1.d 4776ms 13ms 4.0MB 4740ms 333ms ldc2 1.39.0
d 1.d timeout 0.0ms 6.4MB 4997ms 250ms dmd 2.109.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 681ms 4.2ms 61.0MB 683ms 13ms node 23.3.0
javascript 1.js 738ms 1.4ms 83.5MB 747ms 23ms bun 1.1.38
d 1.d 1207ms 11ms 3.9MB 1193ms 83ms ldc2 1.39.0
d 1.d 2052ms 57ms 6.6MB 2020ms 140ms dmd 2.109.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2167ms 20ms 117.7MB 8173ms 63ms node 23.3.0
d 1.d 3581ms 0.9ms 4.0MB 3570ms 0ms ldc2 1.39.0
d 1.d 3647ms 53ms 5.9MB 3633ms 0ms dmd 2.109.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 643ms 4.2ms 117.0MB 2300ms 43ms node 23.3.0
d 1.d 897ms 1.4ms 3.6MB 887ms 0ms ldc2 1.39.0
d 1.d 909ms 3.9ms 5.3MB 897ms 0ms dmd 2.109.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 227ms 0.3ms 3.3MB 220ms 0ms ldc2 1.39.0
d 1.d 230ms 0.5ms 4.8MB 220ms 0ms dmd 2.109.1
javascript 6-m.js 262ms 0.7ms 112.9MB 813ms 47ms node 23.3.0