V 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
v 1.v 836ms 6.6ms 22.1MB 817ms 7ms v/clang+gc 0.4.8
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
v 1.v 2183ms 50ms 2086.6MB 1270ms 893ms v/clang 0.4.8

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 70ms 1.5ms 4.6MB 60ms 0ms v/clang+gc 0.4.8
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
v 1.v 207ms 2.8ms 197.6MB 117ms 77ms v/clang 0.4.8

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
v 1.v timeout 0.0ms 22.2MB 9390ms 10183ms v/clang 0.4.8
v 1.v timeout 0.0ms 22.7MB 9123ms 10333ms v/clang+gc 0.4.8

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
v 1-m.v 2847ms 390ms 15.8MB 5313ms 5787ms v/clang 0.4.8
v 1-m.v 2925ms 120ms 20.2MB 5463ms 5907ms v/clang+gc 0.4.8

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
v 1.v timeout 0.0ms 29.2MB 4983ms 3ms v/clang+gc 0.4.8

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
javascript 1.js 549ms 51ms 67.0MB 523ms 20ms bun 1.1.38
v 1.v timeout 0.0ms 13.0MB 4980ms 0ms v/clang+gc 0.4.8

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 2229ms 8.2ms 1.9MB 2217ms 0ms v/clang+gc 0.4.8
v 1.v 2268ms 4.1ms 1.1MB 2257ms 0ms v/clang 0.4.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 194ms 1.6ms 1.1MB 183ms 0ms v/clang 0.4.8
v 1.v 198ms 4.0ms 1.9MB 183ms 0ms v/clang+gc 0.4.8

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 508ms 1.5ms 1.3MB 497ms 0ms v/clang 0.4.8
v 1.v 541ms 3.4ms 2.1MB 527ms 3ms v/clang+gc 0.4.8

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 56ms 0.9ms 1.3MB 50ms 0ms v/clang 0.4.8
v 1.v 57ms 1.0ms 2.1MB 47ms 0ms v/clang+gc 0.4.8

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 1.1ms 0.1ms 1.3MB 0ms 0ms v/clang 0.4.8
v 1.v 1.6ms 0.3ms 1.9MB 0ms 0ms v/clang+gc 0.4.8
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

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 239ms 2.0ms 1.3MB 230ms 0ms v/clang 0.4.8
v 1.v 259ms 4.5ms 2.1MB 250ms 0ms v/clang+gc 0.4.8
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
v 1.v 706ms 3.0ms 1.3MB 697ms 0ms v/clang 0.4.8
v 1.v 767ms 5.1ms 2.1MB 757ms 0ms v/clang+gc 0.4.8
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
v 1.v 92ms 1.4ms 1.3MB 80ms 0ms v/clang 0.4.8
v 1.v 101ms 1.3ms 2.1MB 90ms 0ms v/clang+gc 0.4.8
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

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 310ms 0.2ms 1.6MB 300ms 0ms v/clang 0.4.8
v 1.v 311ms 1.5ms 2.4MB 300ms 0ms v/clang+gc 0.4.8
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

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 34ms 0.5ms 1.8MB 27ms 0ms v/clang 0.4.8
v 1.v 34ms 0.4ms 2.4MB 23ms 0ms v/clang+gc 0.4.8
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

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 320ms 15ms 40.3MB 303ms 3ms v/clang 0.4.8
v 2.v 336ms 3.9ms 6.9MB 327ms 0ms v/clang+gc 0.4.8
v 1.v 356ms 8.0ms 41.2MB 343ms 0ms v/clang+gc 0.4.8
v 2.v 419ms 1.9ms 6.1MB 410ms 0ms v/clang 0.4.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 58ms 1.6ms 11.0MB 47ms 0ms v/clang 0.4.8
v 1.v 63ms 1.1ms 11.9MB 50ms 0ms v/clang+gc 0.4.8
v 2.v 82ms 0.3ms 3.1MB 70ms 0ms v/clang+gc 0.4.8
v 2.v 105ms 1.0ms 2.4MB 93ms 0ms v/clang 0.4.8

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 4746ms 11ms 91.6MB 4717ms 33ms node 23.3.0
v 2.v timeout 0.0ms 7.9MB 4980ms 7ms v/clang+gc 0.4.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 790ms 7.8ms 2.6MB 780ms 0ms v/clang+gc 0.4.8
javascript 3.js 1029ms 1.4ms 74.0MB 1013ms 17ms node 23.3.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.0MB 4977ms 10ms v/clang+gc 0.4.8

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 3278ms 17ms 26.0MB 3260ms 0ms v/clang+gc 0.4.8

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
v 1.v timeout 0.0ms 1.6MB 4990ms 0ms v/clang 0.4.8
v 1.v timeout 0.0ms 3.0MB 4990ms 0ms v/clang+gc 0.4.8

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
v 1.v 1281ms 4.1ms 1.5MB 1273ms 0ms v/clang 0.4.8
v 1.v 1313ms 9.0ms 2.6MB 1300ms 0ms v/clang+gc 0.4.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 262ms 0.7ms 112.9MB 813ms 47ms node 23.3.0
v 1.v 324ms 1.5ms 1.5MB 310ms 0ms v/clang 0.4.8
v 1.v 334ms 1.2ms 2.5MB 323ms 0ms v/clang+gc 0.4.8