Javascript VS C++ 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
javascript 1.js 3580ms 51ms 262.3MB 2593ms 1213ms node 19.5.0

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

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

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

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

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

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 1.7ms 0.8ms 2.4MB 0ms 0ms g++ 12.2.0
cpp 1.cpp 2.1ms 0.6ms 1.4MB 0ms 0ms clang++ 14.0.0
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

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 136ms 2.6ms 88.9MB 73ms 53ms bun 0.5.1
javascript 1.js 3900ms 51ms 154.6MB 1713ms 353ms node 19.5.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 87ms 5.3ms 74.2MB 23ms 27ms bun 0.5.1
javascript 1.js 373ms 19ms 70.1MB 350ms 83ms node 19.5.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 131ms 1.3ms 92.3MB 110ms 7ms bun 0.5.1
javascript 1.js 170ms 1.6ms 75.5MB 147ms 20ms node 19.5.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 722ms 0.6ms 257.6MB 697ms 47ms bun 0.5.1
javascript 1.js 1074ms 7.9ms 281.7MB 1037ms 103ms node 19.5.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
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
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

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

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

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 225ms 0.5ms 1.3MB 213ms 0ms g++ 12.2.0
cpp 0-i.cpp 255ms 3.2ms 1.4MB 240ms 0ms clang++ 14.0.0
cpp 1.cpp 326ms 1.8ms 1.4MB 313ms 0ms clang++ 14.0.0
cpp 1.cpp 341ms 1.0ms 1.3MB 330ms 0ms g++ 12.2.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

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 25ms 0.0ms 1.3MB 17ms 0ms g++ 12.2.0
cpp 0-i.cpp 29ms 2.1ms 1.4MB 20ms 0ms clang++ 14.0.0
cpp 1.cpp 36ms 0.8ms 1.4MB 27ms 0ms clang++ 14.0.0
cpp 1.cpp 36ms 0.4ms 1.4MB 30ms 0ms g++ 12.2.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

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

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

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
javascript 3.js 1552ms 2.5ms 62.3MB 1543ms 17ms node 19.5.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 1059ms 3.0ms 3.3MB 2077ms 0ms clang++ 14.0.0
cpp 7-m.cpp 1061ms 5.4ms 1.3MB 2080ms 0ms g++ 12.2.0
cpp 8-m.cpp 1065ms 0.4ms 1.4MB 2080ms 0ms g++ 12.2.0
cpp 8-m.cpp 1069ms 14ms 3.5MB 2080ms 0ms clang++ 14.0.0
cpp 6-im.cpp 2223ms 8.8ms 3.3MB 4353ms 3ms clang++ 14.0.0
cpp 6-im.cpp 2238ms 14ms 1.3MB 4390ms 0ms g++ 12.2.0
javascript 6-m.js 2751ms 43ms 68.9MB 5193ms 17ms node 19.5.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 273ms 0.1ms 3.4MB 520ms 0ms clang++ 14.0.0
cpp 8-m.cpp 274ms 0.9ms 1.4MB 520ms 0ms g++ 12.2.0
cpp 7-m.cpp 275ms 2.4ms 1.3MB 520ms 0ms g++ 12.2.0
cpp 8-m.cpp 276ms 3.9ms 3.3MB 517ms 0ms clang++ 14.0.0
cpp 6-im.cpp 562ms 1.6ms 3.5MB 1087ms 0ms clang++ 14.0.0
cpp 6-im.cpp 566ms 3.0ms 1.4MB 1097ms 0ms g++ 12.2.0
javascript 6-m.js 835ms 6.6ms 68.8MB 1467ms 23ms node 19.5.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 75ms 0.9ms 1.3MB 130ms 0ms g++ 12.2.0
cpp 7-m.cpp 76ms 2.0ms 3.3MB 130ms 0ms clang++ 14.0.0
cpp 8-m.cpp 76ms 1.2ms 3.3MB 127ms 0ms clang++ 14.0.0
cpp 8-m.cpp 78ms 4.9ms 1.3MB 130ms 0ms g++ 12.2.0
cpp 6-im.cpp 149ms 0.8ms 3.3MB 270ms 0ms clang++ 14.0.0
cpp 6-im.cpp 151ms 1.5ms 1.3MB 277ms 0ms g++ 12.2.0
javascript 6.js 404ms 15ms 66.5MB 533ms 23ms node 19.5.0