V VS Go benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz (Model 85)

* -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 1321ms 16ms 37.0MB 1293ms 7ms v/clang 0.3.3
v 1.v 1359ms 0.9ms 37.0MB 1337ms 7ms v/clang+gc 0.3.3
go 1.go 3847ms 17ms 45.6MB 5503ms 83ms go 1.19.5
go 1.go timeout 0.0ms 39.4MB 4970ms 7ms tinygo 0.25.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 109ms 4.2ms 5.6MB 97ms 0ms v/clang 0.3.3
v 1.v 110ms 7.0ms 5.6MB 90ms 0ms v/clang+gc 0.3.3
go 1.go 324ms 2.4ms 8.3MB 417ms 3ms go 1.19.5
go 1.go 438ms 0.7ms 5.9MB 423ms 0ms tinygo 0.25.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 984ms 210ms 13.6MB 1910ms 0ms go 1.19.5
go 1.go 2170ms 13ms 256.7MB 2087ms 63ms tinygo 0.25.0
v 1.v timeout 0.0ms 20.6MB 5197ms 4170ms v/clang 0.3.3
v 1.v timeout 0.0ms 16.9MB 5010ms 4343ms v/clang+gc 0.3.3

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 73ms 13ms 5.4MB 117ms 0ms go 1.19.5
go 1.go 346ms 2.1ms 65.6MB 307ms 23ms tinygo 0.25.0
v 1-m.v 3554ms 853ms 14.5MB 3587ms 2920ms v/clang+gc 0.3.3
v 1-m.v 4741ms 230ms 14.6MB 4897ms 3993ms v/clang 0.3.3

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 197ms 3.5ms 8.3MB 180ms 3ms go 1.19.5
v 1.v timeout 0.0ms 28.5MB 4977ms 7ms v/clang+gc 0.3.3

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 58ms 1.3ms 8.9MB 50ms 0ms go 1.19.5
v 1.v timeout 0.0ms 12.9MB 4970ms 7ms v/clang+gc 0.3.3

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 1448ms 2.7ms 5.0MB 2787ms 7ms go 1.19.5
go 3.go 3217ms 6.8ms 48.9MB 3190ms 7ms tinygo 0.25.0
v 1.v 3377ms 5.0ms 2.0MB 3363ms 0ms v/clang+gc 0.3.3
v 1.v 3398ms 1.4ms 2.0MB 3387ms 0ms v/clang 0.3.3

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 144ms 2.5ms 5.0MB 220ms 0ms go 1.19.5
v 1.v 284ms 4.5ms 2.0MB 270ms 0ms v/clang+gc 0.3.3
v 1.v 291ms 11ms 1.9MB 273ms 0ms v/clang 0.3.3
go 3.go 353ms 3.4ms 49.9MB 333ms 7ms tinygo 0.25.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 251ms 0.7ms 2.9MB 450ms 0ms go 1.19.5
v 1.v 747ms 13ms 2.0MB 730ms 0ms v/clang+gc 0.3.3
v 1.v 765ms 28ms 2.0MB 750ms 0ms v/clang 0.3.3

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 32ms 0.4ms 2.9MB 40ms 0ms go 1.19.5
v 1.v 79ms 1.4ms 2.2MB 70ms 0ms v/clang 0.3.3
v 1.v 80ms 3.4ms 2.2MB 67ms 0ms v/clang+gc 0.3.3

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 1.9ms 0.9ms 0.2MB 0ms 0ms tinygo 0.25.0
v 1.v 2.2ms 0.7ms 2.0MB 0ms 0ms v/clang+gc 0.3.3
go 1.go 3.4ms 0.5ms 2.9MB 0ms 0ms go 1.19.5
v 1.v 3.4ms 2.4ms 2.1MB 0ms 0ms v/clang 0.3.3

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 207ms 4.6ms 58.5MB 300ms 50ms go 1.19.5
v 1.v 535ms 228ms 15.1MB 247ms 367ms v/clang+gc 0.3.3
go 1-m.go 699ms 31ms 164.2MB 677ms 470ms go 1.19.5
go 2-m.go 837ms 102ms 180.4MB 803ms 630ms go 1.19.5

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 49ms 1.1ms 25.1MB 47ms 13ms go 1.19.5
go 2.go 131ms 41ms 39.1MB 93ms 50ms go 1.19.5
go 1.go 157ms 5.5ms 37.1MB 103ms 90ms go 1.19.5
v 1.v 282ms 35ms 13.4MB 113ms 153ms v/clang+gc 0.3.3

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 195ms 4.6ms 0.3MB 183ms 0ms tinygo 0.25.0
go 3.go 201ms 2.4ms 3.4MB 187ms 0ms go 1.19.5
v 1.v 433ms 10ms 2.2MB 420ms 0ms v/clang+gc 0.3.3
v 1.v 443ms 2.2ms 2.2MB 433ms 0ms v/clang 0.3.3

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 566ms 1.0ms 0.3MB 553ms 0ms tinygo 0.25.0
go 3.go 589ms 3.6ms 3.4MB 573ms 0ms go 1.19.5
v 1.v 1259ms 9.9ms 2.2MB 1243ms 0ms v/clang+gc 0.3.3
v 1.v 1319ms 7.9ms 2.1MB 1310ms 0ms v/clang 0.3.3

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 99ms 0.4ms 0.0MB 90ms 0ms tinygo 0.25.0
go 3.go 108ms 3.8ms 4.1MB 100ms 0ms go 1.19.5
v 1.v 153ms 3.9ms 2.2MB 143ms 0ms v/clang+gc 0.3.3
v 1.v 161ms 3.8ms 2.3MB 150ms 0ms v/clang 0.3.3

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 599ms 3.1ms 2.9MB 587ms 0ms go 1.19.5
go 1.go 839ms 2.3ms 2.0MB 830ms 0ms tinygo 0.25.0
v 1.v 1064ms 6.8ms 2.3MB 1047ms 0ms v/clang 0.3.3
v 1.v 1085ms 27ms 2.2MB 1070ms 0ms v/clang+gc 0.3.3

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 65ms 1.5ms 2.9MB 50ms 0ms go 1.19.5
go 1.go 84ms 1.0ms 0.0MB 73ms 0ms tinygo 0.25.0
v 1.v 109ms 0.9ms 2.3MB 100ms 0ms v/clang 0.3.3
v 1.v 110ms 0.1ms 2.3MB 100ms 0ms v/clang+gc 0.3.3

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 632ms 1.7ms 10.7MB 617ms 0ms v/clang 0.3.3
v 2.v 633ms 2.4ms 10.7MB 620ms 0ms v/clang+gc 0.3.3
go 2.go 808ms 5.4ms 17.6MB 793ms 0ms tinygo 0.25.0
v 1.v 950ms 56ms 41.3MB 927ms 10ms v/clang+gc 0.3.3
go 1.go 986ms 32ms 73.7MB 957ms 17ms go 1.19.5
v 1.v 995ms 21ms 41.2MB 973ms 10ms v/clang 0.3.3
go 1.go 1060ms 43ms 43.8MB 1027ms 10ms tinygo 0.25.0
go 2.go 1095ms 9.3ms 20.0MB 1073ms 13ms go 1.19.5

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 137ms 0.2ms 20.9MB 120ms 3ms v/clang 0.3.3
v 1.v 137ms 1.6ms 20.8MB 120ms 0ms v/clang+gc 0.3.3
go 1.go 142ms 8.0ms 22.2MB 120ms 3ms go 1.19.5
v 2.v 149ms 0.7ms 4.0MB 140ms 0ms v/clang+gc 0.3.3
v 2.v 151ms 4.9ms 4.0MB 140ms 0ms v/clang 0.3.3
go 1.go 151ms 0.6ms 13.4MB 140ms 0ms tinygo 0.25.0
go 2.go 198ms 10ms 5.6MB 173ms 0ms tinygo 0.25.0
go 2.go 259ms 2.0ms 8.0MB 250ms 0ms go 1.19.5

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1588ms 15ms 8.5MB 1560ms 10ms go 1.19.5
v 1.v 4231ms 76ms 3.0MB 4203ms 7ms v/clang+gc 0.3.3
v 1.v timeout 0.0ms 4.1MB 4970ms 10ms v/clang 0.3.3
v 2.v timeout 0.0ms 3.1MB 4980ms 0ms v/clang+gc 0.3.3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 367ms 3.4ms 8.5MB 350ms 3ms go 1.19.5
v 1.v 1065ms 28ms 2.8MB 1050ms 0ms v/clang+gc 0.3.3
v 1.v 1791ms 13ms 3.1MB 1773ms 0ms v/clang 0.3.3
v 2.v 2070ms 45ms 2.8MB 2057ms 0ms v/clang+gc 0.3.3

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2681ms 27ms 4.9MB 5153ms 3ms go 1.19.5
go 1.go timeout 0.0ms 5.4MB 4983ms 3ms go 1.19.5
go 1.go timeout 0.0ms 2.4MB 4983ms 0ms tinygo 0.25.0
v 1.v timeout 0.0ms 2.9MB 4990ms 0ms v/clang 0.3.3
v 1.v timeout 0.0ms 2.8MB 4987ms 0ms v/clang+gc 0.3.3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 674ms 7.1ms 3.4MB 1277ms 0ms go 1.19.5
go 1.go 1330ms 2.8ms 2.9MB 1323ms 0ms go 1.19.5
v 1.v 1998ms 0.3ms 2.8MB 1987ms 0ms v/clang 0.3.3
v 1.v 1999ms 2.2ms 2.9MB 1990ms 0ms v/clang+gc 0.3.3
go 1.go timeout 0.0ms 0.0MB 4983ms 0ms tinygo 0.25.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 182ms 3.8ms 2.9MB 313ms 0ms go 1.19.5
go 1.go 336ms 2.1ms 2.9MB 327ms 0ms go 1.19.5
v 1.v 507ms 4.1ms 2.5MB 497ms 0ms v/clang+gc 0.3.3
v 1.v 512ms 11ms 2.5MB 497ms 0ms v/clang 0.3.3
go 1.go 1953ms 7.3ms 0.0MB 1940ms 0ms tinygo 0.25.0