Files
aria2-rust-pro/docs/perf/local-comparison.md
T

6.8 KiB

Local Comparison

Generated: 2026-05-28 12:08:14 +00:00

Environment

  • Repo root:
  • Bench executable: \target\release\deps\rpc_pressure-386f010a5bd10aaf.exe
  • Manifest: \Cargo.toml
  • Bench process exit code: unavailable in this refresh
  • Peak working set during local bench run: unavailable in this refresh
  • Peak handle count during local bench run: unavailable in this refresh

Reference Artifact Detection

  • Rust CLI local executable: \target\release\aria2-rust-pro.exe
  • Original aria2 local executable: \dist\upstream\aria2-1.37.0-win-64bit-build1\aria2-1.37.0-win-64bit-build1\aria2c.exe
  • Original aria2 version summary: aria2 version 1.37.0; Enabled Features: Async DNS, BitTorrent, Firefox3 Cookie, GZip, HTTPS, Message Digest, Metalink, XML-RPC, SFTP; Compiler: mingw-w64 8.0.0 (alpha) / gcc 10-win32 20220113; built by x86_64-pc-linux-gnu; targeting x86_64-w64-mingw32; on Nov 15 2023 11:17:49
  • Current Pro Core local executable: \build\pro-core\windows-x64-mingw-30403\stage\aria2-pro-core-1.37.0+pro.20260523-windows-x64-mingw\aria2c.exe
  • Current Pro Core version summary: aria2 version 1.37.0; Enabled Features: Async DNS, BitTorrent, Firefox3 Cookie, GZip, HTTPS, Message Digest, Metalink, XML-RPC, SFTP; Compiler: mingw-w64 15.0.0 (alpha) / gcc 16.1.0; built by x86_64-w64-mingw32; on May 23 2026 15:48:03; Pro Build: 1.37.0+pro.20260523; Pro Commit: 64365cf3cdca441ab710d53be8e4ded37a9b3d7e
  • Comparison status: Rust local benchmarks and expanded same-host loopback HTTP comparisons were executed now across Rust, current Pro Core, and original upstream aria2 on this Windows host.

Same-Host Local HTTP Transfer Comparisons

  • Payload bytes: 8388608
  • Payload SHA256: BDF23837181F5808331800C1AE2B4F7D7A839536B10D58491471C50DDE23833A

single_file_split1

  • One loopback HTTP file with split=1 and max-connection-per-server=1
Binary Exit code Samples Median Spread Output count Output bytes SHA256 all match
Rust CLI 0 5 132.53 ms 120.16 .. 138.76 ms 1 8388608 true
Pro Core 0 5 199.34 ms 89.93 .. 211.04 ms 1 8388608 true
Upstream aria2 0 5 181.67 ms 172.38 .. 202.26 ms 1 8388608 true

segmented_single_file

  • One loopback HTTP file with split=4 and max-connection-per-server=4
Binary Exit code Samples Median Spread Output count Output bytes SHA256 all match
Rust CLI 0 5 125.49 ms 121.33 .. 132.76 ms 1 8388608 true
Pro Core 0 5 209.49 ms 208.44 .. 1197.45 ms 1 8388608 true
Upstream aria2 0 5 174.51 ms 171.90 .. 194.46 ms 1 8388608 true

Rust Criterion Summary

Benchmark Mean 95% CI
bt_visibility_pressure/bt_visibility/32 910.409 us 905.654 us .. 915.190 us
bt_visibility_pressure/bt_visibility/64 1.8430 ms 1.8378 ms .. 1.8490 ms
live_http_multi_download_contention_pressure/multi_live_http_transfer/loose_cap 11.6320 ms 11.5494 ms .. 11.7368 ms
live_http_multi_download_contention_pressure/multi_live_http_transfer/tight_cap 11.5679 ms 11.5103 ms .. 11.6136 ms
live_http_shared_runtime_multi_download_pressure/shared_runtime_live_http_transfer/cache_pressure_6way_256k 7.2873 ms 7.1368 ms .. 7.4519 ms
live_http_shared_runtime_multi_download_pressure/shared_runtime_live_http_transfer/loose_cap 11.8141 ms 11.6959 ms .. 11.9347 ms
live_http_shared_runtime_multi_download_pressure/shared_runtime_live_http_transfer/tight_cap 11.8461 ms 11.7319 ms .. 11.9568 ms
live_http_shared_runtime_multi_download_pressure/shared_runtime_live_http_transfer/tight_cap_6way 12.7498 ms 12.6485 ms .. 12.8552 ms
live_http_transfer_contention_pressure/live_http_transfer/loose_cap 11.6614 ms 11.4932 ms .. 11.8646 ms
live_http_transfer_contention_pressure/live_http_transfer/tight_cap 10.9603 ms 10.8586 ms .. 11.0562 ms
rpc_mixed_pressure/mixed_rpc/192 135.092 us 134.021 us .. 136.230 us
rpc_mixed_pressure/mixed_rpc/96 84.114 us 82.923 us .. 85.222 us
rpc_shared_runtime_fairness_pressure/shared_runtime_fairness/four_way_rebalance 88.653 us 87.023 us .. 90.329 us
rpc_shared_runtime_fairness_pressure/shared_runtime_fairness/three_way_rebalance 66.833 us 65.539 us .. 68.357 us
rpc_speed_limit_pressure/speed_limit/32 60.370 us 59.997 us .. 60.762 us
rpc_speed_limit_pressure/speed_limit/64 90.078 us 87.568 us .. 93.803 us
rpc_tell_status_pressure/tell_status/128 2.6805 ms 2.6576 ms .. 2.7154 ms
rpc_tell_status_pressure/tell_status/64 1.3265 ms 1.3112 ms .. 1.3412 ms
runtime_snapshot_pressure/runtime_snapshot/128 24.534 us 23.895 us .. 25.183 us
runtime_snapshot_pressure/runtime_snapshot/256 52.193 us 48.362 us .. 59.051 us
runtime_snapshot_pressure/runtime_snapshot/64 13.701 us 13.281 us .. 14.100 us
scheduler_backpressure_pressure/backpressure/128 33.341 us 33.017 us .. 33.630 us
scheduler_backpressure_pressure/backpressure/64 18.659 us 18.064 us .. 19.492 us

Notes

  • This report is a local comparison anchor, not a cross-host release benchmark.
  • Memory evidence here is peak working set observed during the benchmark process. Peak handle count is currently only recorded when the runtime can provide it.
  • The same-host HTTP comparison now covers a narrow single-connection case (split=1) plus a segmented single-file case (split=4) on the same local loopback server model.
  • Each binary/scenario pair now performs one untimed warmup launch followed by repeated timed samples; the side-by-side table reports median elapsed plus fastest..slowest spread so single-run host noise is less likely to dominate the comparison.
  • The same-host driver now avoids coarse sleep quantization in its short-process timing and loopback accept path, and it keeps each scenario on one warmed loopback server/port across the timed sample set so Windows first-port cold-path stalls do not dominate the Rust rows.
  • Small connector-side wins such as no-proxy reqwest client reuse are still better validated through the direct ARIA2_RUST_PRO_HTTP_TIMING breakdown than by whole-process elapsed tables alone.
  • The same-host side-by-side table is strongest as a local regression anchor. Some non-Rust reference rows can still pick up host-local cold-path noise, so this report should not be treated as a precision benchmark without corroborating direct runs.
  • Shared-runtime multi-download pressure is still represented here through the Rust Criterion anchors rather than the side-by-side table.
  • The upstream Windows reference now comes from the official aria2 1.37.0 release artifact downloaded into <repo-root>\dist\upstream\.