Acton VS Java benchmarks

Current benchmark data was generated on Fri Aug 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 460ms 9.2ms 574.1MB 553ms 83ms openjdk 21
java 2.java 470ms 8.8ms 624.4MB 577ms 97ms openjdk 23
java 2-m.java 480ms 9.9ms 640.7MB 680ms 110ms graal/jvm 17.0.8
java 2.java 1176ms 13ms 1047.1MB 593ms 757ms openjdk/zgc 21
acton 1.act timeout 0.0ms 67.2MB 5870ms 87ms actonc 0.26.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 120ms 4.9ms 168.1MB 150ms 30ms openjdk 21
java 2-m.java 123ms 0.5ms 97.0MB 173ms 23ms openjdk 23
java 2-m.java 144ms 3.8ms 224.3MB 210ms 57ms graal/jvm 17.0.8
java 2.java 304ms 3.3ms 241.5MB 163ms 190ms openjdk/zgc 21
acton 1.act 826ms 31ms 12.1MB 957ms 60ms actonc 0.26.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 232ms 12ms 8.0MB 210ms 33ms actonc 0.26.0
java 1-m.java 602ms 6.6ms 411.7MB 1153ms 120ms graal/jvm 17.0.8
java 1-m.java 633ms 49ms 246.2MB 1660ms 67ms openjdk 23
java 1-m.java 649ms 44ms 264.8MB 1710ms 73ms openjdk 21
java 1-m.java 984ms 28ms 530.2MB 1703ms 417ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 73ms 0.7ms 6.0MB 60ms 10ms actonc 0.26.0
java 1-m.java 306ms 11ms 225.9MB 603ms 67ms graal/jvm 17.0.8
java 1-m.java 335ms 14ms 179.8MB 920ms 50ms openjdk 21
java 1-m.java 367ms 12ms 110.6MB 1010ms 40ms openjdk 23
java 1-m.java 491ms 3.2ms 216.5MB 947ms 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.6ms 0.1ms 4.4MB 0ms 0ms actonc 0.26.0
java 1.java 62ms 1.4ms 52.9MB 64ms 20ms graal/jvm 17.0.8
java 1.java 69ms 4.7ms 43.9MB 78ms 10ms openjdk 21
java 1.java 73ms 1.9ms 44.7MB 74ms 16ms openjdk 23
java 1.java 186ms 3.9ms 42.9MB 82ms 132ms openjdk/zgc 21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 397ms 3.2ms 536.3MB 483ms 97ms openjdk 23
java 1.java 416ms 5.0ms 677.5MB 473ms 100ms openjdk 21
java 1-m.java 424ms 8.3ms 643.7MB 600ms 123ms graal/jvm 17.0.8
java 1.java 1020ms 3.1ms 946.5MB 477ms 693ms openjdk/zgc 21
acton 1.act 3354ms 208ms 84.5MB 3730ms 60ms actonc 0.26.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 163ms 2.8ms 158.5MB 247ms 40ms openjdk 23
java 1-m.java 166ms 1.2ms 207.9MB 240ms 40ms openjdk 21
java 1-m.java 210ms 6.3ms 253.8MB 347ms 60ms graal/jvm 17.0.8
java 1.java 404ms 6.6ms 341.9MB 220ms 260ms openjdk/zgc 21
acton 1.act 703ms 20ms 23.8MB 760ms 40ms actonc 0.26.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 387ms 7.8ms 118.0MB 423ms 27ms openjdk 23
java 1.java 394ms 5.7ms 115.1MB 443ms 27ms openjdk 21
java 1.java 562ms 3.9ms 112.6MB 470ms 167ms openjdk/zgc 21
java 1-m.java 600ms 11ms 206.8MB 877ms 60ms graal/jvm 17.0.8
java 2.java 775ms 5.6ms 57.1MB 827ms 23ms openjdk 21
java 2.java 783ms 4.2ms 60.4MB 833ms 17ms openjdk 23
java 2.java 839ms 5.9ms 53.4MB 773ms 137ms openjdk/zgc 21
java 2-m.java 1323ms 9.8ms 232.4MB 2367ms 107ms graal/jvm 17.0.8
acton 1.act timeout 0.0ms 560.8MB 6650ms 90ms actonc 0.26.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 151ms 1.0ms 68.0MB 197ms 20ms openjdk 23
java 1.java 152ms 7.0ms 64.9MB 203ms 13ms openjdk 21
java 1-m.java 195ms 2.0ms 123.9MB 273ms 37ms graal/jvm 17.0.8
java 2.java 259ms 2.0ms 50.4MB 310ms 20ms openjdk 23
java 2.java 259ms 2.3ms 50.0MB 323ms 13ms openjdk 21
java 1.java 285ms 7.4ms 61.4MB 207ms 150ms openjdk/zgc 21
java 2.java 366ms 2.5ms 47.6MB 303ms 140ms openjdk/zgc 21
java 2-m.java 471ms 0.4ms 190.4MB 827ms 67ms graal/jvm 17.0.8
acton 1.act 2393ms 5.2ms 192.5MB 2880ms 50ms actonc 0.26.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3168ms 8.2ms 444.5MB 3577ms 97ms graal/jvm 17.0.8
acton 1-m.act 3528ms 126ms 6.8MB 3530ms 2533ms actonc 0.26.0
java 1.java 3667ms 34ms 351.6MB 4527ms 113ms openjdk 21
java 1.java 3722ms 53ms 381.7MB 4533ms 113ms openjdk 23
java 1.java timeout 0.0ms 1806.3MB 4663ms 1183ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 882ms 6.0ms 444.1MB 1227ms 87ms graal/jvm 17.0.8
acton 1-m.act 944ms 33ms 6.2MB 863ms 740ms actonc 0.26.0
java 1-m.java 1009ms 31ms 430.6MB 1757ms 100ms openjdk 23
java 1-m.java 1016ms 30ms 351.1MB 1783ms 83ms openjdk 21
java 1.java 1974ms 2.9ms 1319.5MB 1730ms 1020ms openjdk/zgc 21