Acton VS Java benchmarks

Current benchmark data was generated on Tue Jul 01 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
java 2.java 476ms 14ms 573.9MB 563ms 97ms openjdk 21
java 2.java 481ms 2.8ms 624.6MB 587ms 103ms openjdk 23
java 2-m.java 481ms 16ms 643.1MB 673ms 133ms graal/jvm 17.0.8
java 2.java 1212ms 29ms 1064.1MB 593ms 787ms openjdk/zgc 21
acton 1.act timeout 0.0ms 67.0MB 5903ms 87ms actonc 0.26.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 127ms 4.0ms 96.1MB 163ms 30ms openjdk 23
java 2-m.java 127ms 1.6ms 167.1MB 160ms 33ms openjdk 21
java 2-m.java 148ms 3.7ms 215.1MB 223ms 53ms graal/jvm 17.0.8
java 2.java 301ms 3.4ms 241.5MB 157ms 200ms openjdk/zgc 21
acton 1.act 825ms 24ms 12.1MB 950ms 73ms actonc 0.26.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 227ms 8.3ms 8.0MB 210ms 30ms actonc 0.26.0
java 1-m.java 608ms 7.4ms 347.0MB 1180ms 103ms graal/jvm 17.0.8
java 1-m.java 619ms 42ms 265.1MB 1663ms 80ms openjdk 21
java 1-m.java 654ms 49ms 239.7MB 1747ms 80ms openjdk 23
java 1-m.java 966ms 32ms 530.8MB 1573ms 430ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 84ms 19ms 5.9MB 70ms 10ms actonc 0.26.0
java 1-m.java 312ms 26ms 225.9MB 610ms 73ms graal/jvm 17.0.8
java 1-m.java 328ms 2.2ms 177.9MB 887ms 60ms openjdk 21
java 1-m.java 350ms 0.5ms 111.7MB 953ms 50ms openjdk 23
java 1-m.java 535ms 28ms 215.2MB 1053ms 217ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 3.5ms 0.3ms 4.3MB 0ms 0ms actonc 0.26.0
java 1.java 68ms 2.0ms 53.3MB 70ms 20ms graal/jvm 17.0.8
java 1.java 68ms 4.0ms 43.9MB 80ms 14ms openjdk 21
java 1.java 72ms 5.5ms 44.8MB 78ms 16ms openjdk 23
java 1.java 196ms 9.1ms 42.9MB 88ms 144ms openjdk/zgc 21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 406ms 6.2ms 680.0MB 477ms 93ms openjdk 21
java 1.java 408ms 5.0ms 542.5MB 507ms 90ms openjdk 23
java 1-m.java 413ms 4.2ms 629.7MB 610ms 117ms graal/jvm 17.0.8
java 1.java 1046ms 24ms 955.8MB 473ms 713ms openjdk/zgc 21
acton 1.act 3298ms 25ms 84.6MB 3703ms 53ms actonc 0.26.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 166ms 1.8ms 206.4MB 237ms 40ms openjdk 21
java 1-m.java 170ms 2.7ms 159.0MB 250ms 43ms openjdk 23
java 1-m.java 225ms 12ms 254.0MB 373ms 67ms graal/jvm 17.0.8
java 1.java 419ms 13ms 341.6MB 220ms 280ms openjdk/zgc 21
acton 1.act 725ms 34ms 23.8MB 793ms 33ms actonc 0.26.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 410ms 19ms 114.9MB 453ms 23ms openjdk 21
java 1.java 466ms 60ms 118.1MB 510ms 23ms openjdk 23
java 1.java 593ms 9.5ms 112.7MB 503ms 167ms openjdk/zgc 21
java 1-m.java 726ms 65ms 268.1MB 1057ms 93ms graal/jvm 17.0.8
java 2.java 783ms 3.1ms 57.6MB 843ms 20ms openjdk 21
java 2.java 785ms 1.4ms 60.4MB 833ms 20ms openjdk 23
java 2.java 848ms 8.5ms 53.3MB 773ms 150ms openjdk/zgc 21
java 2-m.java 1319ms 123ms 288.2MB 2240ms 110ms graal/jvm 17.0.8
acton 1.act timeout 0.0ms 560.9MB 6637ms 83ms actonc 0.26.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 151ms 3.7ms 68.5MB 197ms 20ms openjdk 23
java 1.java 159ms 0.5ms 64.7MB 210ms 20ms openjdk 21
java 1-m.java 214ms 11ms 125.0MB 307ms 40ms graal/jvm 17.0.8
java 2.java 264ms 4.5ms 50.1MB 330ms 17ms openjdk 21
java 2.java 264ms 7.6ms 51.2MB 313ms 20ms openjdk 23
java 1.java 286ms 3.1ms 61.6MB 213ms 150ms openjdk/zgc 21
java 2.java 369ms 1.9ms 47.8MB 310ms 140ms openjdk/zgc 21
java 2-m.java 479ms 3.7ms 198.6MB 820ms 83ms graal/jvm 17.0.8
acton 1.act 2432ms 20ms 192.5MB 2923ms 63ms actonc 0.26.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3266ms 35ms 444.3MB 3720ms 113ms graal/jvm 17.0.8
acton 1-m.act 3388ms 212ms 6.8MB 3370ms 2387ms actonc 0.26.0
java 1.java 3753ms 26ms 396.3MB 4607ms 117ms openjdk 23
java 1.java 3808ms 10ms 426.2MB 4643ms 110ms openjdk 21
java 1.java timeout 0.0ms 1782.6MB 4820ms 1117ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 895ms 5.6ms 441.3MB 1260ms 83ms graal/jvm 17.0.8
acton 1-m.act 948ms 42ms 6.1MB 900ms 703ms actonc 0.26.0
java 1-m.java 1022ms 25ms 462.8MB 1763ms 103ms openjdk 23
java 1-m.java 1026ms 28ms 420.5MB 1827ms 93ms openjdk 21
java 1.java 2017ms 38ms 1333.3MB 1737ms 1047ms openjdk/zgc 21