Java VS Acton benchmarks

Current benchmark data was generated on Mon Mar 31 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 446ms 6.6ms 574.3MB 540ms 80ms openjdk 21
java 2-m.java 461ms 12ms 639.3MB 650ms 120ms graal/jvm 17.0.8
java 2.java 467ms 4.6ms 626.3MB 577ms 97ms openjdk 23
java 2.java 1242ms 10ms 1063.4MB 587ms 813ms openjdk/zgc 21
acton 1.act timeout 0.0ms 67.0MB 5977ms 77ms actonc 0.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 122ms 0.5ms 168.2MB 157ms 33ms openjdk 21
java 2-m.java 126ms 6.9ms 98.0MB 163ms 30ms openjdk 23
java 2-m.java 147ms 7.7ms 226.3MB 220ms 57ms graal/jvm 17.0.8
java 2.java 305ms 2.4ms 241.7MB 147ms 210ms openjdk/zgc 21
acton 1.act 832ms 29ms 12.1MB 970ms 70ms actonc 0.24.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 261ms 7.1ms 7.1MB 230ms 70ms actonc 0.24.1
java 1-m.java 610ms 52ms 266.2MB 1650ms 67ms openjdk 21
java 1-m.java 611ms 12ms 371.3MB 1183ms 107ms graal/jvm 17.0.8
java 1-m.java 662ms 27ms 244.0MB 1750ms 73ms openjdk 23
java 1-m.java 959ms 39ms 495.7MB 1580ms 417ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1.act 97ms 12ms 5.4MB 77ms 30ms actonc 0.24.1
java 1-m.java 296ms 14ms 226.0MB 593ms 63ms graal/jvm 17.0.8
java 1-m.java 327ms 2.6ms 195.7MB 893ms 57ms openjdk 21
java 1-m.java 384ms 14ms 126.9MB 1043ms 53ms openjdk 23
java 1-m.java 496ms 4.6ms 214.8MB 960ms 220ms openjdk/zgc 21

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 903ms 5.1ms 95.3MB 3317ms 37ms graal/jvm 17.0.8
java 1-m.java 961ms 4.1ms 48.5MB 3580ms 23ms openjdk 21
java 1-m.java 980ms 5.9ms 50.1MB 3620ms 23ms openjdk 23
java 1-m.java 1035ms 21ms 45.9MB 3390ms 140ms openjdk/zgc 21

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 175ms 4.6ms 48.6MB 487ms 23ms openjdk 21
java 1-m.java 192ms 6.8ms 51.1MB 497ms 27ms openjdk 23
java 1-m.java 199ms 9.2ms 96.0MB 560ms 40ms graal/jvm 17.0.8
java 1-m.java 303ms 6.5ms 45.8MB 503ms 137ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 438ms 1.8ms 100.5MB 603ms 43ms graal/jvm 17.0.8
java 4.java 455ms 3.1ms 47.6MB 537ms 20ms openjdk 21
java 4.java 458ms 2.9ms 49.1MB 547ms 17ms openjdk 23
java 4.java 570ms 1.8ms 45.0MB 543ms 137ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 123ms 1.3ms 46.6MB 163ms 13ms openjdk 21
java 4.java 125ms 5.6ms 47.9MB 170ms 17ms openjdk 23
java 4-m.java 136ms 11ms 95.6MB 203ms 37ms graal/jvm 17.0.8
java 4.java 247ms 1.3ms 43.9MB 167ms 140ms 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.2ms 3.9MB 0ms 0ms actonc 0.24.1
java 1.java 61ms 2.2ms 52.6MB 64ms 20ms graal/jvm 17.0.8
java 1.java 68ms 7.8ms 43.6MB 76ms 12ms openjdk 21
java 1.java 72ms 4.4ms 44.7MB 78ms 16ms openjdk 23
java 1.java 195ms 7.0ms 43.0MB 86ms 138ms openjdk/zgc 21

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 1065ms 28ms 129.8MB 3650ms 37ms openjdk 21
java 3-m.java 1100ms 41ms 156.1MB 3827ms 53ms openjdk 23
java 3-m.java 1115ms 11ms 177.5MB 3837ms 57ms graal/jvm 17.0.8
java 3-m.java 1444ms 60ms 179.1MB 4560ms 210ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 326ms 4.7ms 102.1MB 960ms 43ms openjdk 21
java 3-m.java 343ms 22ms 134.8MB 940ms 53ms graal/jvm 17.0.8
java 3-m.java 344ms 15ms 101.3MB 1017ms 43ms openjdk 23
java 3-m.java 435ms 4.6ms 98.7MB 907ms 170ms openjdk/zgc 21

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b.java 1146ms 8.8ms 54.1MB 1247ms 17ms openjdk 21
java 1b.java 1162ms 10ms 55.3MB 1270ms 23ms openjdk 23
java 1b.java 1198ms 25ms 109.6MB 1430ms 43ms graal/jvm 17.0.8
java 1.java 1249ms 5.1ms 136.5MB 1367ms 43ms graal/jvm 17.0.8
java 1b.java 1281ms 19ms 51.5MB 1273ms 140ms openjdk/zgc 21
java 1a.java 1652ms 2.5ms 54.9MB 1747ms 20ms openjdk 21
java 1a.java 1654ms 6.1ms 56.0MB 1743ms 27ms openjdk 23
java 1a.java 1679ms 2.4ms 102.8MB 1787ms 40ms graal/jvm 17.0.8
java 1.java 1700ms 4.8ms 202.0MB 1770ms 43ms openjdk 21
java 1.java 1711ms 9.8ms 312.3MB 1763ms 57ms openjdk 23
java 1a.java 1779ms 2.3ms 51.9MB 1757ms 140ms openjdk/zgc 21
java 1.java 2388ms 7.1ms 831.5MB 1797ms 697ms openjdk/zgc 21
java 2.java timeout 0.0ms 630.0MB 5257ms 117ms openjdk 21
java 2.java timeout 0.0ms 768.6MB 5283ms 120ms openjdk 23
java 2.java timeout 0.0ms 3385.3MB 3327ms 2027ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b-m.java 179ms 6.3ms 50.8MB 277ms 23ms openjdk 23
java 1a-m.java 187ms 1.1ms 50.6MB 290ms 20ms openjdk 21
java 1-m.java 188ms 4.5ms 82.0MB 260ms 33ms openjdk 21
java 1b-m.java 190ms 7.1ms 49.8MB 307ms 20ms openjdk 21
java 1-m.java 192ms 5.7ms 86.9MB 263ms 30ms openjdk 23
java 1a-m.java 195ms 2.0ms 52.1MB 307ms 20ms openjdk 23
java 1-m.java 200ms 4.8ms 111.7MB 310ms 40ms graal/jvm 17.0.8
java 1b-m.java 206ms 2.0ms 99.8MB 340ms 40ms graal/jvm 17.0.8
java 1a-m.java 206ms 3.2ms 96.7MB 310ms 40ms graal/jvm 17.0.8
java 1a.java 315ms 1.1ms 48.0MB 297ms 143ms openjdk/zgc 21
java 1b.java 315ms 11ms 47.7MB 310ms 143ms openjdk/zgc 21
java 1.java 338ms 3.9ms 114.2MB 260ms 170ms openjdk/zgc 21
java 2-m.java 545ms 11ms 602.9MB 827ms 90ms openjdk 21
java 2-m.java 561ms 7.3ms 835.7MB 843ms 97ms openjdk 23
java 2.java 1624ms 57ms 1404.0MB 850ms 1090ms openjdk/zgc 21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 395ms 3.2ms 679.6MB 470ms 87ms openjdk 21
java 1.java 403ms 1.6ms 543.2MB 493ms 93ms openjdk 23
java 1-m.java 412ms 16ms 637.2MB 607ms 107ms graal/jvm 17.0.8
java 1.java 1076ms 3.5ms 966.1MB 440ms 750ms openjdk/zgc 21
acton 1.act 3219ms 15ms 101.8MB 3503ms 50ms actonc 0.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 164ms 2.5ms 206.3MB 230ms 47ms openjdk 21
java 1-m.java 165ms 2.0ms 158.9MB 240ms 40ms openjdk 23
java 1-m.java 223ms 6.9ms 254.1MB 370ms 57ms graal/jvm 17.0.8
java 1.java 415ms 11ms 341.7MB 217ms 273ms openjdk/zgc 21
acton 1.act 691ms 24ms 30.4MB 727ms 23ms actonc 0.24.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 438ms 4.2ms 48.0MB 470ms 17ms openjdk 23
java 1.java 438ms 4.3ms 45.2MB 473ms 20ms openjdk 21
java 1.java 447ms 2.7ms 81.5MB 477ms 30ms graal/jvm 17.0.8
java 1.java 570ms 1.1ms 45.0MB 487ms 143ms openjdk/zgc 21
java 2.java 1224ms 17ms 555.8MB 1360ms 67ms openjdk 21
java 2.java 1249ms 7.4ms 776.3MB 1370ms 97ms openjdk 23
java 2.java 3395ms 149ms 2652.0MB 1667ms 1940ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 116ms 3.6ms 81.6MB 143ms 30ms graal/jvm 17.0.8
java 1.java 117ms 0.6ms 44.9MB 153ms 20ms openjdk 21
java 1.java 120ms 2.2ms 47.9MB 153ms 20ms openjdk 23
java 1.java 243ms 3.2ms 44.8MB 160ms 140ms openjdk/zgc 21
java 2-m.java 294ms 6.4ms 364.7MB 423ms 57ms openjdk 21
java 2-m.java 308ms 8.6ms 401.9MB 447ms 60ms openjdk 23
java 2.java 697ms 16ms 537.4MB 467ms 410ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 383ms 7.9ms 114.9MB 430ms 27ms openjdk 21
java 1.java 389ms 4.7ms 118.3MB 433ms 23ms openjdk 23
java 1.java 557ms 11ms 112.8MB 463ms 167ms openjdk/zgc 21
java 1-m.java 598ms 27ms 233.2MB 870ms 70ms graal/jvm 17.0.8
java 2.java 773ms 7.9ms 57.6MB 830ms 17ms openjdk 21
java 2.java 778ms 4.5ms 60.5MB 830ms 20ms openjdk 23
java 2.java 853ms 16ms 53.4MB 783ms 143ms openjdk/zgc 21
java 2-m.java 1372ms 31ms 247.6MB 2460ms 100ms graal/jvm 17.0.8
acton 1.act timeout 0.0ms 560.9MB 6817ms 97ms actonc 0.24.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 153ms 2.7ms 68.5MB 197ms 23ms openjdk 23
java 1.java 154ms 2.2ms 64.7MB 207ms 17ms openjdk 21
java 1-m.java 206ms 11ms 137.5MB 283ms 50ms graal/jvm 17.0.8
java 2.java 254ms 2.5ms 49.8MB 317ms 17ms openjdk 21
java 2.java 263ms 5.2ms 50.7MB 313ms 17ms openjdk 23
java 1.java 279ms 5.2ms 61.5MB 200ms 143ms openjdk/zgc 21
java 2.java 368ms 2.4ms 47.7MB 303ms 143ms openjdk/zgc 21
java 2-m.java 474ms 5.0ms 145.4MB 840ms 60ms graal/jvm 17.0.8
acton 1.act 2313ms 3.9ms 192.3MB 2840ms 43ms actonc 0.24.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
acton 1-m.act 2906ms 70ms 6.6MB 2733ms 2017ms actonc 0.24.1
java 1.java 3176ms 11ms 442.6MB 3620ms 87ms graal/jvm 17.0.8
java 1.java 3621ms 96ms 430.3MB 4470ms 113ms openjdk 23
java 1.java 3656ms 83ms 353.4MB 4533ms 97ms openjdk 21
java 1.java timeout 0.0ms 1831.4MB 4633ms 1227ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 881ms 8.8ms 441.3MB 1233ms 80ms graal/jvm 17.0.8
acton 1-m.act 884ms 28ms 5.5MB 803ms 650ms actonc 0.24.1
java 1-m.java 988ms 25ms 422.8MB 1780ms 93ms openjdk 21
java 1-m.java 1002ms 24ms 437.7MB 1777ms 103ms openjdk 23
java 1.java 2030ms 37ms 1345.0MB 1667ms 1083ms openjdk/zgc 21

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3.java timeout 0.0ms 407.6MB 5393ms 87ms graal/jvm 17.0.8
java 3.java timeout 0.0ms 302.3MB 5340ms 60ms openjdk 21
java 3.java timeout 0.0ms 304.8MB 5323ms 63ms openjdk 23
java 3.java timeout 0.0ms 467.8MB 4960ms 310ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 761ms 6.1ms 177.1MB 1127ms 53ms graal/jvm 17.0.8
java 3-m.java 795ms 12ms 130.7MB 1180ms 33ms openjdk 21
java 3-m.java 821ms 23ms 132.4MB 1233ms 33ms openjdk 23
java 3.java 980ms 36ms 134.0MB 1170ms 197ms openjdk/zgc 21

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 1976ms 1.3ms 47.8MB 7553ms 27ms openjdk 21
java 2-m.java 1986ms 6.0ms 48.4MB 7583ms 20ms openjdk 23
java 2-m.java 2103ms 11ms 45.5MB 7567ms 150ms openjdk/zgc 21
java 2-m.java 2484ms 35ms 94.3MB 9307ms 47ms graal/jvm 17.0.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 606ms 6.9ms 48.4MB 2150ms 20ms openjdk 23
java 2-m.java 608ms 6.0ms 47.9MB 2147ms 20ms openjdk 21
java 2-m.java 728ms 4.7ms 45.4MB 2140ms 143ms openjdk/zgc 21
java 2-m.java 766ms 2.2ms 95.1MB 2697ms 40ms graal/jvm 17.0.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 253ms 9.4ms 47.4MB 750ms 20ms openjdk 21
java 2-m.java 258ms 12ms 48.5MB 773ms 20ms openjdk 23
java 2-m.java 300ms 28ms 94.1MB 910ms 43ms graal/jvm 17.0.8
java 2-m.java 382ms 8.6ms 45.6MB 763ms 140ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 2160ms 236ms 259.0MB 8187ms 127ms openjdk 21
java 1-m.java 2442ms 127ms 242.9MB 9230ms 147ms openjdk 23
java 1-m.java 2866ms 129ms 1219.2MB 9147ms 1173ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 418ms 14ms 92.2MB 1377ms 60ms openjdk 23
java 1-m.java 476ms 18ms 117.2MB 1580ms 63ms openjdk 21
java 1-m.java 673ms 18ms 230.2MB 1827ms 257ms openjdk/zgc 21