V VS Javascript benchmarks

Current benchmark data was generated on Wed Jan 22 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
v 1.v 780ms 6.7ms 22.1MB 760ms 0ms v/clang+gc 0.4.9
javascript 1-m.js 950ms 61ms 187.4MB 1437ms 247ms bun 1.1.45
javascript 1-m.js 1251ms 9.3ms 276.4MB 2177ms 160ms node 23.6.0
v 1.v 2142ms 22ms 2086.6MB 1273ms 850ms v/clang 0.4.9

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 70ms 2.4ms 4.6MB 57ms 0ms v/clang+gc 0.4.9
javascript 1.js 95ms 0.8ms 79.4MB 77ms 23ms bun 1.1.45
javascript 1.js 127ms 2.0ms 82.4MB 117ms 33ms node 23.6.0
v 1.v 208ms 1.3ms 197.5MB 120ms 70ms v/clang 0.4.9

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 1594ms 14ms 93.6MB 1670ms 63ms node 23.6.0
javascript 1.js 2295ms 49ms 100.5MB 2313ms 70ms bun 1.1.45
v 1.v timeout 0.0ms 22.3MB 8987ms 10597ms v/clang 0.4.9
v 1.v timeout 0.0ms 27.9MB 8927ms 10420ms v/clang+gc 0.4.9

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 156ms 1.2ms 76.5MB 137ms 23ms node 23.6.0
javascript 1.js 187ms 1.2ms 86.5MB 203ms 30ms bun 1.1.45
v 1-m.v 2599ms 357ms 20.3MB 4740ms 5323ms v/clang+gc 0.4.9
v 1-m.v 3125ms 80ms 15.7MB 5590ms 6563ms v/clang 0.4.9

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 277ms 0.8ms 67.3MB 293ms 23ms node 23.6.0
javascript 1.js 714ms 5.9ms 77.1MB 693ms 17ms bun 1.1.45
v 1.v timeout 0.0ms 28.3MB 4980ms 3ms v/clang+gc 0.4.9

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 126ms 0.7ms 65.5MB 140ms 17ms node 23.6.0
javascript 1.js 525ms 2.3ms 66.8MB 493ms 23ms bun 1.1.45
v 1.v timeout 0.0ms 13.1MB 4990ms 0ms v/clang+gc 0.4.9

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 2153ms 8.6ms 1.1MB 2143ms 0ms v/clang 0.4.9
v 1.v 2197ms 2.9ms 1.9MB 2183ms 0ms v/clang+gc 0.4.9

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 186ms 2.6ms 1.1MB 177ms 0ms v/clang 0.4.9
v 1.v 188ms 0.5ms 1.9MB 180ms 0ms v/clang+gc 0.4.9

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 509ms 3.4ms 1.3MB 493ms 3ms v/clang 0.4.9
v 1.v 534ms 2.1ms 2.1MB 520ms 0ms v/clang+gc 0.4.9

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 52ms 0.1ms 1.3MB 43ms 0ms v/clang 0.4.9
v 1.v 56ms 1.3ms 2.1MB 50ms 0ms v/clang+gc 0.4.9

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 1.0ms 0.0ms 1.4MB 0ms 0ms v/clang 0.4.9
v 1.v 1.4ms 0.1ms 1.9MB 0ms 0ms v/clang+gc 0.4.9
javascript 1.js 13ms 0.5ms 32.3MB 0ms 10ms bun 1.1.45
javascript 1.js 31ms 0.6ms 52.0MB 14ms 8ms node 23.6.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 242ms 1.9ms 1.3MB 230ms 0ms v/clang 0.4.9
v 1.v 257ms 2.6ms 2.1MB 243ms 0ms v/clang+gc 0.4.9
javascript 2.js 307ms 1.4ms 66.8MB 297ms 13ms node 23.6.0
javascript 1.js 559ms 2.7ms 64.5MB 543ms 13ms node 23.6.0
javascript 2.js 640ms 0.8ms 127.1MB 687ms 63ms bun 1.1.45
javascript 1.js 826ms 4.8ms 110.7MB 910ms 77ms bun 1.1.45

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 714ms 3.3ms 1.3MB 703ms 0ms v/clang 0.4.9
v 1.v 770ms 30ms 2.1MB 753ms 3ms v/clang+gc 0.4.9
javascript 2.js 840ms 3.3ms 72.4MB 823ms 17ms node 23.6.0
javascript 1.js 1586ms 6.0ms 71.4MB 1567ms 17ms node 23.6.0
javascript 2.js 1816ms 29ms 122.9MB 1960ms 60ms bun 1.1.45
javascript 1.js 2536ms 140ms 112.1MB 2847ms 137ms bun 1.1.45

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 89ms 0.4ms 1.4MB 80ms 0ms v/clang 0.4.9
v 1.v 99ms 0.7ms 2.1MB 90ms 0ms v/clang+gc 0.4.9
javascript 1.js 164ms 2.5ms 61.8MB 150ms 7ms node 23.6.0
javascript 2.js 164ms 0.9ms 60.8MB 157ms 10ms node 23.6.0
javascript 1.js 323ms 3.2ms 133.9MB 347ms 83ms bun 1.1.45
javascript 2.js 359ms 16ms 126.8MB 380ms 60ms bun 1.1.45

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 309ms 0.2ms 1.6MB 300ms 0ms v/clang 0.4.9
v 1.v 311ms 1.4ms 2.3MB 300ms 0ms v/clang+gc 0.4.9
javascript 6.js 459ms 2.4ms 59.7MB 447ms 7ms node 23.6.0
javascript 6.js 658ms 0.3ms 45.6MB 653ms 7ms bun 1.1.45

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 33ms 0.4ms 1.6MB 27ms 0ms v/clang 0.4.9
v 1.v 34ms 0.5ms 2.3MB 27ms 0ms v/clang+gc 0.4.9
javascript 6.js 77ms 1.0ms 59.8MB 60ms 10ms node 23.6.0
javascript 6.js 85ms 2.1ms 45.4MB 83ms 3ms bun 1.1.45

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 299ms 8.0ms 60.6MB 283ms 0ms v/clang+gc 0.4.9
v 1.v 303ms 2.9ms 40.3MB 287ms 0ms v/clang 0.4.9
v 2.v 327ms 4.7ms 6.9MB 313ms 0ms v/clang+gc 0.4.9
v 2.v 328ms 1.7ms 6.1MB 310ms 3ms v/clang 0.4.9

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 58ms 0.9ms 11.9MB 47ms 0ms v/clang+gc 0.4.9
v 1.v 62ms 2.2ms 11.0MB 50ms 0ms v/clang 0.4.9
v 2.v 80ms 0.6ms 3.1MB 70ms 0ms v/clang+gc 0.4.9
v 2.v 80ms 0.9ms 2.4MB 70ms 0ms v/clang 0.4.9

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 4723ms 215ms 92.1MB 4707ms 20ms node 23.6.0
v 2.v timeout 0.0ms 7.8MB 4980ms 7ms v/clang+gc 0.4.9

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 802ms 8.1ms 2.6MB 783ms 3ms v/clang+gc 0.4.9
javascript 3.js 1013ms 23ms 74.3MB 990ms 17ms node 23.6.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v timeout 0.0ms 83.1MB 4977ms 7ms v/clang+gc 0.4.9

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 3294ms 20ms 34.1MB 3280ms 0ms v/clang+gc 0.4.9

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2158ms 5.7ms 116.7MB 8230ms 53ms node 23.6.0
v 1.v timeout 0.0ms 1.6MB 4990ms 0ms v/clang 0.4.9
v 1.v timeout 0.0ms 2.8MB 4987ms 0ms v/clang+gc 0.4.9

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 642ms 4.1ms 114.0MB 2290ms 50ms node 23.6.0
v 1.v 1278ms 0.9ms 1.6MB 1267ms 0ms v/clang 0.4.9
v 1.v 1326ms 10ms 2.5MB 1317ms 0ms v/clang+gc 0.4.9

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 263ms 2.0ms 113.2MB 823ms 40ms node 23.6.0
v 1.v 324ms 0.9ms 1.5MB 310ms 0ms v/clang 0.4.9
v 1.v 331ms 2.0ms 2.5MB 323ms 0ms v/clang+gc 0.4.9