Acton VS Go benchmarks

Current benchmark data was generated on Mon Dec 30 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
go 1-m.go 2686ms 20ms 44.1MB 5690ms 43ms go 1.23.4
go 1.go 2953ms 52ms 52.0MB 2943ms 0ms tinygo 0.35.0
acton 1.act timeout 0.0ms 67.0MB 5963ms 77ms actonc 0.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 231ms 2.2ms 6.5MB 220ms 0ms tinygo 0.35.0
go 1-m.go 238ms 1.6ms 7.9MB 400ms 3ms go 1.23.4
acton 1.act 829ms 36ms 12.0MB 960ms 70ms actonc 0.24.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 118ms 1.0ms 10.3MB 107ms 0ms go 1.23.4
acton 1.act 273ms 7.1ms 9.0MB 240ms 77ms actonc 0.24.1

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 35ms 0.8ms 8.2MB 30ms 0ms go 1.23.4
acton 1.act 96ms 11ms 5.3MB 77ms 33ms actonc 0.24.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.6ms 0.1ms 0.1MB 0ms 0ms tinygo 0.35.0
go 1.go 1.5ms 0.1ms 3.4MB 0ms 0ms go 1.23.4
acton 1.act 3.9ms 0.2ms 8.3MB 0ms 0ms actonc 0.24.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 1594ms 13ms 34.9MB 3240ms 40ms go 1.23.4
go 2-m.go 1816ms 7.2ms 42.9MB 3810ms 43ms go 1.23.4
go 1.go 1992ms 14ms 50.6MB 1977ms 3ms tinygo 0.35.0
go 2.go 2569ms 40ms 119.9MB 2547ms 7ms tinygo 0.35.0
acton 1.act 3310ms 185ms 101.9MB 3583ms 63ms actonc 0.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 361ms 4.4ms 12.0MB 697ms 27ms go 1.23.4
go 1.go 375ms 0.7ms 13.5MB 360ms 0ms tinygo 0.35.0
go 2-m.go 406ms 2.2ms 14.0MB 820ms 20ms go 1.23.4
go 2.go 551ms 2.1ms 22.7MB 540ms 0ms tinygo 0.35.0
acton 1.act 699ms 28ms 30.4MB 727ms 37ms actonc 0.24.1

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 289ms 5.5ms 71.7MB 277ms 0ms go 1.23.4
go 1.go 328ms 8.1ms 42.9MB 313ms 0ms tinygo 0.35.0
go 2.go 439ms 2.4ms 18.0MB 427ms 0ms tinygo 0.35.0
go 2.go 782ms 1.4ms 21.8MB 773ms 7ms go 1.23.4
acton 1.act timeout 0.0ms 562.9MB 6753ms 110ms actonc 0.24.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 60ms 4.4ms 21.6MB 47ms 0ms go 1.23.4
go 1.go 65ms 0.8ms 13.0MB 57ms 0ms tinygo 0.35.0
go 2.go 109ms 2.7ms 5.6MB 100ms 0ms tinygo 0.35.0
go 2.go 194ms 2.3ms 5.9MB 183ms 0ms go 1.23.4
acton 1.act 2333ms 30ms 192.4MB 2833ms 50ms actonc 0.24.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1118ms 3.4ms 8.5MB 1100ms 7ms go 1.23.4
acton 1-m.act 3082ms 51ms 6.6MB 2720ms 2220ms actonc 0.24.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 266ms 3.6ms 8.4MB 247ms 3ms go 1.23.4
acton 1-m.act 868ms 22ms 5.6MB 723ms 653ms actonc 0.24.1