Acton VS Java benchmarks

Current benchmark data was generated on Sun Jul 13 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 455ms 1.0ms 575.9MB 557ms 83ms openjdk 21
java 2-m.java 469ms 4.8ms 641.2MB 673ms 113ms graal/jvm 17.0.8
java 2.java 473ms 8.9ms 642.1MB 573ms 103ms openjdk 23
java 2.java 1191ms 22ms 1054.4MB 577ms 773ms openjdk/zgc 21
acton 1.act timeout 0.0ms 67.0MB 5860ms 97ms actonc 0.26.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 125ms 0.6ms 167.1MB 157ms 33ms openjdk 21
java 2.java 129ms 5.0ms 96.0MB 167ms 27ms openjdk 23
java 2-m.java 151ms 3.3ms 227.2MB 220ms 63ms graal/jvm 17.0.8
java 2.java 305ms 2.0ms 241.5MB 157ms 197ms openjdk/zgc 21
acton 1.act 825ms 34ms 12.1MB 950ms 67ms actonc 0.26.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 224ms 8.4ms 8.1MB 207ms 27ms actonc 0.26.0
java 1-m.java 555ms 15ms 273.6MB 1557ms 70ms openjdk 21
java 1-m.java 623ms 13ms 381.7MB 1183ms 123ms graal/jvm 17.0.8
java 1-m.java 641ms 58ms 267.1MB 1720ms 63ms openjdk 23
java 1-m.java 950ms 37ms 500.2MB 1577ms 403ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 76ms 3.4ms 6.0MB 60ms 17ms actonc 0.26.0
java 1-m.java 305ms 11ms 226.1MB 607ms 67ms graal/jvm 17.0.8
java 1-m.java 355ms 28ms 177.9MB 977ms 43ms openjdk 21
java 1-m.java 375ms 23ms 127.9MB 1017ms 50ms openjdk 23
java 1-m.java 508ms 21ms 215.5MB 1010ms 213ms 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.2ms 4.3MB 0ms 0ms actonc 0.26.0
java 1.java 62ms 2.2ms 52.9MB 66ms 18ms graal/jvm 17.0.8
java 1.java 67ms 7.0ms 43.8MB 74ms 18ms openjdk 21
java 1.java 71ms 5.3ms 44.7MB 74ms 16ms openjdk 23
java 1.java 193ms 7.2ms 42.8MB 82ms 136ms openjdk/zgc 21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 401ms 5.9ms 544.3MB 500ms 87ms openjdk 23
java 1.java 403ms 2.1ms 680.0MB 480ms 87ms openjdk 21
java 1-m.java 444ms 62ms 669.4MB 667ms 113ms graal/jvm 17.0.8
java 1.java 1021ms 2.8ms 934.5MB 470ms 697ms openjdk/zgc 21
acton 1.act 3273ms 16ms 84.5MB 3657ms 63ms actonc 0.26.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 164ms 3.1ms 158.5MB 237ms 43ms openjdk 23
java 1-m.java 170ms 10ms 206.6MB 237ms 47ms openjdk 21
java 1-m.java 221ms 7.1ms 253.9MB 363ms 63ms graal/jvm 17.0.8
java 1.java 411ms 7.8ms 341.9MB 223ms 267ms openjdk/zgc 21
acton 1.act 700ms 14ms 23.8MB 760ms 37ms actonc 0.26.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 390ms 0.8ms 118.4MB 430ms 23ms openjdk 23
java 1.java 391ms 5.0ms 115.1MB 447ms 23ms openjdk 21
java 1.java 561ms 6.7ms 112.6MB 463ms 160ms openjdk/zgc 21
java 1-m.java 626ms 57ms 271.3MB 907ms 73ms graal/jvm 17.0.8
java 2.java 779ms 2.8ms 57.2MB 837ms 23ms openjdk 21
java 2.java 783ms 1.4ms 60.2MB 830ms 20ms openjdk 23
java 2.java 853ms 0.8ms 53.3MB 780ms 147ms openjdk/zgc 21
java 2-m.java 1413ms 80ms 290.5MB 2513ms 117ms graal/jvm 17.0.8
acton 1.act timeout 0.0ms 561.1MB 6640ms 77ms actonc 0.26.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 152ms 2.2ms 64.8MB 200ms 20ms openjdk 21
java 1.java 154ms 3.8ms 68.1MB 203ms 20ms openjdk 23
java 1-m.java 212ms 3.8ms 133.8MB 293ms 47ms graal/jvm 17.0.8
java 2.java 262ms 8.9ms 50.3MB 310ms 20ms openjdk 23
java 2.java 263ms 4.7ms 49.3MB 330ms 20ms openjdk 21
java 1.java 278ms 4.5ms 61.5MB 197ms 143ms openjdk/zgc 21
java 2.java 368ms 3.9ms 47.5MB 307ms 143ms openjdk/zgc 21
java 2-m.java 483ms 1.9ms 140.6MB 857ms 63ms graal/jvm 17.0.8
acton 1.act 2437ms 22ms 192.3MB 2917ms 53ms actonc 0.26.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3212ms 15ms 444.6MB 3627ms 110ms graal/jvm 17.0.8
acton 1-m.act 3537ms 106ms 6.7MB 3547ms 2483ms actonc 0.26.0
java 1.java 3669ms 54ms 426.1MB 4610ms 110ms openjdk 21
java 1.java 3752ms 19ms 501.5MB 4603ms 120ms openjdk 23
java 1.java timeout 0.0ms 1758.6MB 4670ms 1183ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 896ms 13ms 444.3MB 1243ms 87ms graal/jvm 17.0.8
acton 1-m.act 963ms 41ms 6.0MB 937ms 683ms actonc 0.26.0
java 1-m.java 1001ms 28ms 353.6MB 1797ms 90ms openjdk 21
java 1-m.java 1015ms 31ms 423.3MB 1787ms 93ms openjdk 23
java 1.java 2003ms 34ms 1358.4MB 1703ms 1060ms openjdk/zgc 21