Javascript VS C benchmarks

Current benchmark data was generated on Thu Feb 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 939ms 14ms 247.7MB 1473ms 283ms bun 1.0.25
javascript 1-m.js 1395ms 30ms 261.0MB 2187ms 363ms node 21.6.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 85ms 3.6ms 114.9MB 70ms 17ms bun 1.0.25
javascript 1.js 140ms 0.6ms 87.4MB 130ms 37ms node 21.6.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 1658ms 4.8ms 83.7MB 1777ms 50ms node 21.6.1
javascript 1.js 2362ms 19ms 128.2MB 2397ms 37ms bun 1.0.25

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 163ms 1.9ms 64.0MB 143ms 17ms node 21.6.1
javascript 1.js 175ms 0.4ms 120.8MB 193ms 17ms bun 1.0.25

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 292ms 3.6ms 58.3MB 310ms 27ms node 21.6.1
javascript 1.js 445ms 1.2ms 107.5MB 427ms 13ms bun 1.0.25

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 141ms 2.5ms 54.1MB 167ms 13ms node 21.6.1
javascript 1.js 357ms 27ms 97.4MB 340ms 13ms bun 1.0.25

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.1ms 0.1ms 1.4MB 0ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 1.c 1.3ms 0.1ms 2.1MB 0ms 0ms gcc 13.2.0
c 1.c 1.5ms 0.3ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
javascript 1.js 14ms 0.3ms 65.6MB 0ms 10ms bun 1.0.25
javascript 1.js 34ms 0.8ms 44.0MB 16ms 6ms node 21.6.1

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 181ms 7.8ms 109.5MB 93ms 93ms bun 1.0.25
javascript 1-m.js 3227ms 733ms 217.5MB 3567ms 1320ms node 21.6.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 127ms 11ms 81.1MB 30ms 53ms bun 1.0.25
javascript 1.js 418ms 5.4ms 71.0MB 390ms 117ms node 21.6.1

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 83ms 2.6ms 108.5MB 67ms 7ms bun 1.0.25
javascript 1.js 119ms 1.2ms 65.0MB 90ms 30ms node 21.6.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 414ms 3.1ms 271.4MB 430ms 23ms bun 1.0.25
javascript 1.js 737ms 2.7ms 202.3MB 783ms 97ms node 21.6.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 315ms 1.3ms 56.2MB 310ms 13ms node 21.6.1
javascript 1.js 405ms 1.0ms 157.6MB 417ms 17ms bun 1.0.25
javascript 2.js 524ms 3.6ms 127.5MB 560ms 13ms bun 1.0.25
javascript 1.js 524ms 4.3ms 54.6MB 507ms 13ms node 21.6.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 865ms 1.6ms 64.0MB 853ms 17ms node 21.6.1
javascript 1.js 1155ms 11ms 183.2MB 1197ms 37ms bun 1.0.25
javascript 1.js 1478ms 1.9ms 61.5MB 1457ms 20ms node 21.6.1
javascript 2.js 1497ms 2.9ms 124.5MB 1530ms 20ms bun 1.0.25

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 165ms 2.5ms 51.9MB 153ms 10ms node 21.6.1
javascript 2.js 169ms 0.2ms 50.3MB 167ms 3ms node 21.6.1
javascript 1.js 205ms 3.0ms 134.6MB 207ms 23ms bun 1.0.25
javascript 2.js 285ms 1.8ms 122.3MB 320ms 7ms bun 1.0.25

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 477ms 4.1ms 169.9MB 633ms 100ms bun 1.0.25
javascript 1.js 522ms 2.3ms 123.9MB 600ms 90ms node 21.6.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 105ms 1.0ms 116.9MB 100ms 13ms bun 1.0.25
javascript 1.js 163ms 2.8ms 90.9MB 167ms 33ms node 21.6.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 245ms 0.5ms 1.5MB 233ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 8-i.c 255ms 1.1ms 2.3MB 243ms 0ms gcc 13.2.0
c 5.c 297ms 0.4ms 1.5MB 287ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 8-i.c 301ms 1.9ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 309ms 0.5ms 2.3MB 300ms 0ms gcc 13.2.0
c 2.c 311ms 1.1ms 1.5MB 300ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 5.c 311ms 1.0ms 2.3MB 300ms 0ms gcc 13.2.0
c 5.c 314ms 1.5ms 2.1MB 303ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 318ms 3.6ms 2.1MB 303ms 0ms clang 14.0.0-1ubuntu1.1
javascript 6.js 499ms 10ms 49.9MB 483ms 7ms node 21.6.1
javascript 6.js 704ms 2.9ms 81.5MB 703ms 3ms bun 1.0.25

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 27ms 0.1ms 1.5MB 20ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 8-i.c 28ms 0.5ms 2.3MB 20ms 0ms gcc 13.2.0
c 5.c 32ms 0.4ms 1.5MB 20ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 2.c 33ms 0.3ms 2.3MB 23ms 0ms gcc 13.2.0
c 8-i.c 33ms 1.6ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 33ms 0.5ms 2.3MB 27ms 0ms gcc 13.2.0
c 2.c 34ms 0.8ms 1.5MB 27ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 2.c 34ms 0.9ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 1.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
javascript 6.js 85ms 0.6ms 49.9MB 67ms 13ms node 21.6.1
javascript 6.js 92ms 2.7ms 81.4MB 87ms 3ms bun 1.0.25

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2219ms 17ms 112.5MB 2240ms 30ms bun 1.0.25
javascript 1.js 2467ms 16ms 52.9MB 2470ms 10ms node 21.6.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 578ms 2.0ms 106.3MB 590ms 13ms bun 1.0.25
javascript 1.js 655ms 6.6ms 50.7MB 660ms 7ms node 21.6.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js timeout 0.0ms 81.6MB 4987ms 23ms node 21.6.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 1127ms 3.3ms 65.6MB 1113ms 23ms node 21.6.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 947ms 11ms 4.1MB 3703ms 0ms gcc 13.2.0
c 6-im.c 981ms 47ms 4.1MB 3790ms 0ms gcc 13.2.0
c 6-im.c 1003ms 11ms 9.1MB 3920ms 3ms clang 14.0.0-1ubuntu1.1
c 4-m.c 1117ms 3.7ms 5.1MB 4367ms 10ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1145ms 6.7ms 4.1MB 4493ms 0ms gcc 13.2.0
c 5-im.c 1335ms 18ms 5.3MB 5220ms 13ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1825ms 3.8ms 7.3MB 7183ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1933ms 0.6ms 4.1MB 7637ms 3ms gcc 13.2.0
javascript 6-m.js 2120ms 26ms 92.2MB 7783ms 97ms node 21.6.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 246ms 0.5ms 4.1MB 937ms 0ms gcc 13.2.0
c 6-im.c 252ms 6.4ms 4.0MB 957ms 0ms gcc 13.2.0
c 6-im.c 258ms 0.1ms 9.2MB 973ms 3ms clang 14.0.0-1ubuntu1.1
c 4-m.c 288ms 1.9ms 7.0MB 1090ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 297ms 1.3ms 4.0MB 1130ms 0ms gcc 13.2.0
c 5-im.c 340ms 0.0ms 7.3MB 1300ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 462ms 0.4ms 5.3MB 1787ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 487ms 1.0ms 4.0MB 1893ms 0ms gcc 13.2.0
javascript 6-m.js 636ms 17ms 91.5MB 2100ms 110ms node 21.6.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 69ms 0.7ms 4.1MB 243ms 0ms gcc 13.2.0
c 6-im.c 70ms 0.0ms 4.0MB 247ms 0ms gcc 13.2.0
c 6-im.c 72ms 1.1ms 7.1MB 247ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 80ms 0.5ms 5.1MB 280ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 83ms 0.5ms 4.0MB 300ms 0ms gcc 13.2.0
c 5-im.c 109ms 28ms 5.2MB 363ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 124ms 0.7ms 7.0MB 447ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 129ms 1.4ms 4.0MB 480ms 0ms gcc 13.2.0
javascript 6-m.js 260ms 4.6ms 91.2MB 737ms 90ms node 21.6.1