Rust VS Acton benchmarks

Current benchmark data was generated on Wed Mar 22 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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.)

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 5c-m.rs 186ms 4.9ms 1.7MB 323ms 0ms rustc 1.70.0-nightly
rust 5-m.rs 211ms 9.0ms 1.7MB 370ms 3ms rustc 1.68.0
rust 1c.rs 228ms 1.4ms 1.0MB 217ms 0ms rustc 1.70.0-nightly
rust 1.rs 314ms 0.3ms 1.9MB 303ms 0ms rustc 1.68.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 5c-m.rs 28ms 0.1ms 1.7MB 37ms 0ms rustc 1.70.0-nightly
rust 1c.rs 29ms 3.1ms 1.1MB 17ms 0ms rustc 1.70.0-nightly
rust 5-m.rs 33ms 1.5ms 1.7MB 40ms 0ms rustc 1.68.0
rust 1.rs 34ms 0.4ms 1.1MB 23ms 0ms rustc 1.68.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 2.0ms 0.5ms 1.9MB 0ms 0ms rustc 1.70.0-nightly
rust 1.rs 2.1ms 0.7ms 1.0MB 0ms 0ms rustc 1.68.0
acton 1.act 8.0ms 3.1ms 3.4MB 0ms 0ms actonc 0.14.2

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 9.rs 415ms 1.0ms 4.9MB 400ms 0ms rustc 1.70.0-nightly
rust 8.rs 492ms 0.5ms 4.8MB 480ms 0ms rustc 1.68.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 9.rs 20ms 0.1ms 1.0MB 10ms 0ms rustc 1.70.0-nightly
rust 8.rs 23ms 0.5ms 1.0MB 10ms 0ms rustc 1.68.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 257ms 0.1ms 1.0MB 247ms 0ms rustc 1.68.0
rust 7-i.rs 321ms 0.3ms 1.1MB 310ms 0ms rustc 1.68.0
rust 3.rs 339ms 0.6ms 1.1MB 323ms 0ms rustc 1.70.0-nightly
rust 2.rs 343ms 4.4ms 1.0MB 333ms 0ms rustc 1.68.0
rust 1.rs 387ms 0.6ms 1.0MB 380ms 0ms rustc 1.68.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 29ms 0.8ms 1.0MB 20ms 0ms rustc 1.68.0
rust 7-i.rs 36ms 0.9ms 1.0MB 23ms 0ms rustc 1.68.0
rust 2.rs 36ms 0.3ms 1.0MB 30ms 0ms rustc 1.68.0
rust 3.rs 37ms 1.3ms 1.0MB 23ms 0ms rustc 1.70.0-nightly
rust 1.rs 41ms 0.6ms 1.0MB 30ms 0ms rustc 1.68.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 1073ms 2.8ms 2.5MB 2077ms 0ms rustc 1.70.0-nightly
rust 7-m.rs 1079ms 9.3ms 2.3MB 2080ms 0ms rustc 1.68.0
rust 8.rs 2063ms 1.4ms 2.4MB 2050ms 0ms rustc 1.70.0-nightly
rust 7.rs 2063ms 1.5ms 2.2MB 2050ms 0ms rustc 1.68.0
rust 2-m.rs 2166ms 8.8ms 2.2MB 4210ms 0ms rustc 1.68.0
rust 2.rs timeout 0.0ms 2.1MB 4987ms 0ms rustc 1.68.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 274ms 0.9ms 1.1MB 507ms 0ms rustc 1.68.0
rust 8-m.rs 277ms 3.1ms 2.2MB 510ms 0ms rustc 1.70.0-nightly
rust 7.rs 518ms 0.8ms 1.0MB 510ms 0ms rustc 1.68.0
rust 8.rs 518ms 1.9ms 2.2MB 510ms 0ms rustc 1.70.0-nightly
rust 2-m.rs 557ms 3.4ms 2.1MB 1060ms 0ms rustc 1.68.0
rust 2.rs 1729ms 1.3ms 1.1MB 1720ms 0ms rustc 1.68.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 75ms 1.9ms 1.1MB 127ms 0ms rustc 1.68.0
rust 8-m.rs 77ms 2.2ms 1.0MB 127ms 0ms rustc 1.70.0-nightly
rust 8.rs 131ms 0.1ms 1.0MB 120ms 0ms rustc 1.70.0-nightly
rust 7.rs 131ms 0.1ms 1.0MB 120ms 0ms rustc 1.68.0
rust 2-m.rs 144ms 1.4ms 1.0MB 257ms 0ms rustc 1.68.0
rust 2.rs 436ms 0.4ms 1.1MB 423ms 0ms rustc 1.68.0

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4.rs 1723ms 4.7ms 33.8MB 1710ms 0ms rustc 1.68.0
rust 5.rs 1888ms 12ms 33.8MB 1870ms 3ms rustc 1.68.0
rust 3.rs 2042ms 13ms 49.8MB 2010ms 13ms rustc 1.68.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4.rs 151ms 0.5ms 5.7MB 140ms 0ms rustc 1.68.0
rust 5.rs 159ms 0.6ms 5.6MB 150ms 0ms rustc 1.68.0
rust 3.rs 171ms 0.3ms 7.8MB 157ms 0ms rustc 1.68.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 989ms 18ms 6.2MB 1880ms 23ms rustc 1.68.0
rust 5-m.rs 1356ms 89ms 4.6MB 2623ms 23ms rustc 1.68.0
rust 3.rs 1919ms 11ms 6.2MB 1880ms 23ms rustc 1.68.0
rust 1-m.rs 2932ms 28ms 5.0MB 5663ms 80ms rustc 1.68.0
rust 4.rs 3200ms 8.6ms 4.2MB 3183ms 0ms rustc 1.68.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 80ms 5.4ms 2.9MB 127ms 3ms rustc 1.68.0
rust 5-m.rs 109ms 8.6ms 2.7MB 190ms 0ms rustc 1.68.0
rust 3.rs 119ms 0.5ms 3.2MB 107ms 0ms rustc 1.68.0
rust 1-m.rs 208ms 8.0ms 3.0MB 363ms 10ms rustc 1.68.0
rust 4.rs 211ms 1.8ms 2.6MB 197ms 0ms rustc 1.68.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 146ms 0.6ms 3.5MB 137ms 0ms rustc 1.68.0
acton 1.act 539ms 20ms 7.4MB 490ms 20ms actonc 0.14.2
rust 2.rs 600ms 1.1ms 3.7MB 583ms 0ms rustc 1.68.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 40ms 0.4ms 2.8MB 30ms 0ms rustc 1.68.0
rust 2.rs 113ms 0.3ms 3.2MB 107ms 0ms rustc 1.68.0
acton 1.act 235ms 21ms 5.3MB 195ms 0ms actonc 0.14.2

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-im.rs 683ms 1.7ms 1.0MB 1323ms 0ms rustc 1.68.0
rust 2-im.rs 1016ms 13ms 1.1MB 1960ms 0ms rustc 1.68.0
rust 5-m.rs 1243ms 13ms 1.1MB 2383ms 0ms rustc 1.68.0
rust 3-i.rs 1429ms 0.9ms 1.0MB 1417ms 0ms rustc 1.68.0
rust 2-i.rs 2002ms 1.3ms 1.0MB 1990ms 0ms rustc 1.68.0
rust 1-m.rs 2004ms 2.8ms 1.0MB 3880ms 0ms rustc 1.68.0
rust 1.rs 3722ms 30ms 1.0MB 3710ms 0ms rustc 1.68.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-im.rs 64ms 2.2ms 1.1MB 107ms 0ms rustc 1.68.0
rust 2-im.rs 95ms 1.0ms 2.0MB 160ms 0ms rustc 1.68.0
rust 5-m.rs 113ms 3.0ms 1.1MB 190ms 0ms rustc 1.68.0
rust 3-i.rs 121ms 0.2ms 1.0MB 110ms 0ms rustc 1.68.0
rust 2-i.rs 167ms 0.6ms 1.1MB 160ms 0ms rustc 1.68.0
rust 1-m.rs 180ms 6.0ms 1.1MB 320ms 0ms rustc 1.68.0
rust 1.rs 314ms 4.0ms 1.0MB 303ms 0ms rustc 1.68.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 166ms 39ms 27.1MB 77ms 97ms rustc 1.68.0
rust 2-http2.rs 348ms 58ms 43.3MB 470ms 127ms rustc 1.68.0
rust 2.rs 516ms 11ms 93.8MB 243ms 517ms rustc 1.68.0
rust 1-http2.rs 880ms 135ms 58.2MB 1100ms 400ms rustc 1.68.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 59ms 1.0ms 11.0MB 7ms 23ms rustc 1.68.0
rust 2.rs 129ms 4.3ms 23.4MB 43ms 73ms rustc 1.68.0
rust 2-http2.rs 248ms 26ms 24.1MB 307ms 87ms rustc 1.68.0
rust 1-http2.rs 424ms 50ms 24.1MB 587ms 110ms rustc 1.68.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 76ms 0.1ms 38.0MB 53ms 7ms rustc 1.68.0
rust 3.rs 78ms 0.5ms 36.3MB 57ms 10ms rustc 1.68.0
rust 1.rs 124ms 0.5ms 75.5MB 87ms 27ms rustc 1.68.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 505ms 2.9ms 258.5MB 377ms 110ms rustc 1.68.0
rust 3.rs 510ms 0.9ms 258.7MB 413ms 83ms rustc 1.68.0
rust 1.rs 894ms 8.6ms 604.7MB 643ms 230ms rustc 1.68.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 343ms 6.8ms 29.5MB 613ms 3ms rustc 1.68.0
rust 8.rs 576ms 1.7ms 23.7MB 553ms 3ms rustc 1.68.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 49ms 2.9ms 15.8MB 63ms 3ms rustc 1.68.0
rust 8.rs 74ms 1.0ms 11.5MB 57ms 3ms rustc 1.68.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 62ms 3.0ms 1.1MB 50ms 0ms rustc 1.68.0
rust 1.rs 72ms 0.6ms 1.0MB 60ms 0ms rustc 1.68.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 209ms 13ms 1.0MB 197ms 0ms rustc 1.68.0
rust 1.rs 294ms 0.3ms 1.0MB 280ms 0ms rustc 1.68.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 34ms 0.8ms 1.1MB 23ms 0ms rustc 1.68.0
rust 1.rs 48ms 1.0ms 1.9MB 40ms 0ms rustc 1.68.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 938ms 1.6ms 33.9MB 917ms 10ms rustc 1.68.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 195ms 0.8ms 9.8MB 183ms 0ms rustc 1.68.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 479ms 2.3ms 6.7MB 467ms 0ms rustc 1.68.0
rust 1.rs 992ms 42ms 40.9MB 967ms 10ms rustc 1.68.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 109ms 0.3ms 3.1MB 97ms 0ms rustc 1.68.0
rust 1.rs 132ms 0.4ms 11.7MB 120ms 0ms rustc 1.68.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 1746ms 1.0ms 2.6MB 1693ms 37ms rustc 1.68.0
rust 1.rs 1823ms 2.4ms 2.7MB 1647ms 157ms rustc 1.68.0
acton 1.act 4313ms 37ms 7.9MB 3970ms 700ms actonc 0.14.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 386ms 0.3ms 2.5MB 367ms 3ms rustc 1.68.0
rust 2.rs 389ms 0.3ms 2.6MB 377ms 0ms rustc 1.68.0
acton 1.act 1394ms 250ms 6.8MB 1220ms 253ms actonc 0.14.2

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7.rs 569ms 2.7ms 77.5MB 717ms 17ms rustc 1.68.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7.rs 62ms 0.7ms 10.9MB 73ms 0ms rustc 1.68.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0.rs 150ms 1.3ms 1.0MB 140ms 0ms rustc 1.68.0
rust 1.rs 1849ms 2.9ms 1.1MB 1840ms 0ms rustc 1.68.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0.rs 40ms 0.1ms 1.0MB 30ms 0ms rustc 1.68.0
rust 1.rs 465ms 1.0ms 1.0MB 453ms 0ms rustc 1.68.0