D VS Javascript benchmarks

Current benchmark data was generated on Tue Mar 25 2025, 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 977ms 25ms 178.7MB 1493ms 240ms bun 1.2.6
javascript 1-m.js 1281ms 9.6ms 272.7MB 2213ms 177ms node 23.10.0
d 1.d 1796ms 1.6ms 312.6MB 1770ms 33ms ldc2 1.40.1
d 1.d 2825ms 142ms 314.8MB 3023ms 47ms dmd 2.110.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 104ms 4.1ms 79.9MB 83ms 27ms bun 1.2.6
javascript 1.js 129ms 2.8ms 78.7MB 133ms 20ms node 23.10.0
d 1.d 164ms 2.0ms 209.8MB 140ms 13ms ldc2 1.40.1
d 1.d 231ms 4.2ms 211.8MB 203ms 10ms dmd 2.110.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 1632ms 8.2ms 90.4MB 1723ms 60ms node 23.10.0
javascript 1.js 2522ms 17ms 103.0MB 2550ms 60ms bun 1.2.6
d 1.d timeout 0.0ms 17.7MB 4967ms 23ms dmd 2.110.0
d 1.d timeout 0.0ms 16.5MB 4963ms 20ms ldc2 1.40.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 162ms 1.1ms 72.0MB 147ms 23ms node 23.10.0
javascript 1.js 198ms 4.2ms 87.2MB 220ms 27ms bun 1.2.6
d 1.d 1032ms 16ms 12.2MB 1010ms 7ms ldc2 1.40.1
d 1.d 1329ms 7.9ms 14.5MB 1303ms 13ms dmd 2.110.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 274ms 1.8ms 62.8MB 290ms 23ms node 23.10.0
javascript 1.js 530ms 5.1ms 77.9MB 497ms 27ms bun 1.2.6
d 1.d 2558ms 2.8ms 8.0MB 2547ms 0ms ldc2 1.40.1
d 1.d 2909ms 6.1ms 10.4MB 2893ms 3ms dmd 2.110.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 129ms 1.3ms 62.0MB 150ms 20ms node 23.10.0
d 1.d 442ms 0.2ms 8.1MB 430ms 0ms ldc2 1.40.1
javascript 1.js 503ms 3.1ms 67.9MB 473ms 20ms bun 1.2.6
d 1.d 527ms 0.5ms 10.2MB 520ms 0ms dmd 2.110.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 374ms 3.2ms 2.9MB 1423ms 0ms ldc2 1.40.1
d 2-im.d 1118ms 5.5ms 3.1MB 4320ms 0ms ldc2 1.40.1
d 1-i.d 1486ms 1.8ms 2.9MB 1480ms 0ms ldc2 1.40.1
d 1.d 3116ms 13ms 2.9MB 3107ms 0ms ldc2 1.40.1
d 2-i.d 3239ms 1.2ms 2.9MB 3230ms 0ms ldc2 1.40.1
d 1.d 3554ms 9.4ms 4.6MB 3543ms 0ms dmd 2.110.0
d 1-im.d 4461ms 10ms 4.8MB 17470ms 7ms dmd 2.110.0
d 1-i.d timeout 0.0ms 4.5MB 4990ms 0ms dmd 2.110.0
d 2-i.d timeout 0.0ms 4.6MB 4990ms 0ms dmd 2.110.0
d 2-im.d timeout 0.0ms 4.9MB 19733ms 3ms dmd 2.110.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 37ms 0.1ms 3.0MB 110ms 0ms ldc2 1.40.1
d 2-im.d 98ms 2.1ms 3.1MB 350ms 0ms ldc2 1.40.1
d 1-i.d 126ms 2.3ms 2.9MB 120ms 0ms ldc2 1.40.1
d 1.d 265ms 2.7ms 2.9MB 257ms 0ms ldc2 1.40.1
d 2-i.d 268ms 0.7ms 2.9MB 260ms 0ms ldc2 1.40.1
d 1.d 297ms 1.1ms 4.6MB 290ms 0ms dmd 2.110.0
d 1-im.d 376ms 5.0ms 4.9MB 1430ms 0ms dmd 2.110.0
d 2-im.d 526ms 1.6ms 4.9MB 2010ms 0ms dmd 2.110.0
d 1-i.d 857ms 5.5ms 4.5MB 847ms 0ms dmd 2.110.0
d 2-i.d 1387ms 14ms 4.6MB 1377ms 0ms dmd 2.110.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 194ms 1.4ms 49.1MB 180ms 0ms ldc2 1.40.1
d 1.d 628ms 6.9ms 45.2MB 613ms 7ms dmd 2.110.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 25ms 1.4ms 11.1MB 17ms 0ms ldc2 1.40.1
d 1.d 67ms 1.1ms 11.1MB 60ms 0ms dmd 2.110.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1.6ms 0.1ms 3.0MB 0ms 0ms ldc2 1.40.1
d 1.d 2.2ms 0.3ms 5.0MB 0ms 0ms dmd 2.110.0
javascript 1.js 13ms 0.4ms 32.9MB 0ms 0ms bun 1.2.6
javascript 1.js 32ms 0.2ms 48.1MB 18ms 4ms node 23.10.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.9ms 15.7MB 60ms 10ms ldc2 1.40.1
javascript 1.js 77ms 0.6ms 71.4MB 50ms 20ms bun 1.2.6
javascript 1.js 114ms 0.6ms 75.8MB 100ms 20ms node 23.10.0
d 2.d 238ms 2.3ms 22.4MB 233ms 10ms dmd 2.110.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 420ms 4.8ms 268.4MB 340ms 120ms bun 1.2.6
d 2.d 456ms 1.6ms 141.8MB 423ms 37ms ldc2 1.40.1
javascript 1.js 695ms 5.1ms 199.1MB 807ms 83ms node 23.10.0
d 2.d 2491ms 3.8ms 158.8MB 2510ms 33ms dmd 2.110.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 646ms 11ms 55.2MB 2187ms 10ms ldc2 1.40.1
d 1-m.d 1874ms 24ms 47.5MB 5737ms 10ms dmd 2.110.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 96ms 3.1ms 38.7MB 253ms 10ms ldc2 1.40.1
d 1-m.d 206ms 5.7ms 38.1MB 603ms 10ms dmd 2.110.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 132ms 0.5ms 5.9MB 123ms 0ms ldc2 1.40.1
d 1.d 177ms 2.7ms 7.9MB 163ms 7ms dmd 2.110.0
javascript 2.js 315ms 2.2ms 62.6MB 307ms 13ms node 23.10.0
javascript 1.js 565ms 4.9ms 60.8MB 543ms 13ms node 23.10.0
javascript 2.js 669ms 4.6ms 122.7MB 723ms 60ms bun 1.2.6
javascript 1.js 839ms 6.5ms 111.5MB 937ms 80ms bun 1.2.6

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 374ms 1.0ms 5.9MB 363ms 13ms ldc2 1.40.1
d 1.d 514ms 1.2ms 7.9MB 500ms 13ms dmd 2.110.0
javascript 2.js 858ms 3.1ms 69.0MB 843ms 20ms node 23.10.0
javascript 1.js 1605ms 6.6ms 67.4MB 1587ms 17ms node 23.10.0
javascript 2.js 1868ms 19ms 122.7MB 2037ms 87ms bun 1.2.6
javascript 1.js 2390ms 15ms 111.9MB 2710ms 157ms bun 1.2.6

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 57ms 0.9ms 5.9MB 43ms 0ms ldc2 1.40.1
d 1.d 80ms 1.3ms 7.9MB 70ms 0ms dmd 2.110.0
javascript 1.js 166ms 0.5ms 58.4MB 153ms 7ms node 23.10.0
javascript 2.js 168ms 0.8ms 57.3MB 160ms 10ms node 23.10.0
javascript 1.js 325ms 1.7ms 115.4MB 360ms 77ms bun 1.2.6
javascript 2.js 361ms 4.4ms 126.3MB 383ms 47ms bun 1.2.6

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 295ms 0.7ms 7.0MB 283ms 0ms ldc2 1.40.1
d 1.d 2187ms 22ms 9.0MB 2177ms 0ms dmd 2.110.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 15ms 0.3ms 3.0MB 10ms 0ms ldc2 1.40.1
d 1.d 96ms 1.6ms 4.8MB 90ms 0ms dmd 2.110.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 493ms 5.5ms 143.4MB 640ms 137ms bun 1.2.6
javascript 1.js 552ms 10ms 130.6MB 640ms 70ms node 23.10.0
d 1.d 988ms 12ms 312.6MB 960ms 33ms ldc2 1.40.1
d 1.d 1785ms 13ms 314.7MB 1923ms 40ms dmd 2.110.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 120ms 0.9ms 87.8MB 107ms 33ms bun 1.2.6
javascript 1.js 165ms 1.9ms 98.3MB 163ms 37ms node 23.10.0
d 1.d 198ms 1.8ms 312.7MB 163ms 23ms ldc2 1.40.1
d 1.d 350ms 9.4ms 314.7MB 320ms 27ms dmd 2.110.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 362ms 1.8ms 2.9MB 350ms 0ms ldc2 1.40.1
d 2.d 362ms 0.4ms 2.9MB 350ms 0ms ldc2 1.40.1
javascript 6.js 459ms 1.2ms 56.0MB 443ms 10ms node 23.10.0
d 1.d 682ms 4.0ms 4.6MB 673ms 0ms dmd 2.110.0
javascript 6.js 798ms 23ms 46.0MB 793ms 7ms bun 1.2.6
d 2.d 2040ms 13ms 4.6MB 2033ms 0ms dmd 2.110.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 39ms 0.1ms 2.9MB 30ms 0ms ldc2 1.40.1
d 1.d 39ms 0.4ms 2.9MB 30ms 0ms ldc2 1.40.1
d 1.d 71ms 0.3ms 4.6MB 60ms 0ms dmd 2.110.0
javascript 6.js 79ms 0.5ms 56.1MB 67ms 7ms node 23.10.0
javascript 6.js 101ms 1.0ms 45.9MB 97ms 10ms bun 1.2.6
d 2.d 210ms 3.6ms 4.5MB 203ms 0ms dmd 2.110.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 330ms 2.6ms 43.1MB 317ms 3ms ldc2 1.40.1
d 1.d 369ms 6.5ms 77.3MB 353ms 7ms dmd 2.110.0
d 2.d 843ms 1.5ms 46.9MB 823ms 0ms ldc2 1.40.1
d 2.d 1168ms 2.1ms 48.7MB 1150ms 10ms dmd 2.110.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 64ms 1.5ms 15.0MB 57ms 0ms ldc2 1.40.1
d 1.d 77ms 3.4ms 27.2MB 67ms 0ms dmd 2.110.0
d 2.d 209ms 2.5ms 17.1MB 200ms 0ms ldc2 1.40.1
d 2.d 294ms 1.0ms 18.9MB 280ms 0ms dmd 2.110.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 2428ms 10.0ms 8.1MB 2400ms 390ms ldc2 1.40.1
d 1.d 4357ms 29ms 10.2MB 4283ms 490ms dmd 2.110.0
javascript 3.js timeout 0.0ms 88.3MB 4987ms 23ms node 23.10.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 584ms 0.7ms 8.1MB 550ms 113ms ldc2 1.40.1
d 1.d 1028ms 5.0ms 10.2MB 1010ms 110ms dmd 2.110.0
javascript 3.js 1114ms 1.8ms 70.8MB 1097ms 17ms node 23.10.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 584ms 5.3ms 171.9MB 767ms 20ms ldc2 1.40.1
d 3.d 1308ms 5.8ms 172.7MB 1500ms 20ms dmd 2.110.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 64ms 1.1ms 27.6MB 70ms 0ms ldc2 1.40.1
d 3.d 139ms 5.6ms 30.4MB 153ms 0ms dmd 2.110.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2652ms 192ms 60.1MB 2667ms 17ms node 23.10.0
javascript 1.js 2813ms 1.1ms 84.6MB 2820ms 60ms bun 1.2.6
d 1.d 4803ms 10ms 3.9MB 4777ms 350ms ldc2 1.40.1
d 1.d timeout 0.0ms 6.6MB 4983ms 267ms dmd 2.110.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 674ms 3.3ms 57.0MB 683ms 17ms node 23.10.0
javascript 1.js 742ms 8.0ms 84.3MB 747ms 33ms bun 1.2.6
d 1.d 1210ms 2.5ms 3.9MB 1190ms 93ms ldc2 1.40.1
d 1.d 2045ms 6.8ms 6.5MB 2017ms 117ms dmd 2.110.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2183ms 18ms 114.0MB 8280ms 57ms node 23.10.0
d 1.d 3600ms 4.4ms 3.9MB 3587ms 0ms ldc2 1.40.1
d 1.d 3654ms 31ms 5.9MB 3643ms 0ms dmd 2.110.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 654ms 3.0ms 114.4MB 2323ms 53ms node 23.10.0
d 1.d 901ms 1.0ms 3.8MB 890ms 0ms ldc2 1.40.1
d 1.d 922ms 0.8ms 7.6MB 910ms 0ms dmd 2.110.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 228ms 0.3ms 3.0MB 220ms 0ms ldc2 1.40.1
d 1.d 233ms 1.2ms 5.0MB 220ms 0ms dmd 2.110.0
javascript 6-m.js 278ms 5.0ms 111.3MB 840ms 50ms node 23.10.0