RMU includes a local benchmark tool instead of making universal performance
claims. It compares GNU coreutils rm, rmu --delegate, and normal recoverable
Trash mode with progress disabled. Fixture creation and cleanup are outside the
timed region, mode order rotates, and one warm-up precedes each measured path.
Run it against a static release binary with:
tools/benchmark.sh \
--rmu outputs/musl/x86_64/current/rmu \
--gnu-rm /usr/bin/rm \
--runs 20 \
--tree-files 10000 \
--output outputs/benchmarks/local- Date (UTC): 2026-09-08T14:46:37Z
- System: Linux 7.1.13-200.fc44.x86_64 x86_64 GNU/Linux
- CPU: AMD Ryzen 5 7640HS w/ Radeon 760M Graphics
- Temporary filesystem: btrfs
- RMU: rmu 0.7.2 (SHA-256 f9f53388da3ed56d6ba3f6d4b2bcaa0e86ac1f45ef34489ae37d908fded2ed0b)
- Runtime source identity:
048ac9a158e15107f993f93d9979ec9e8e1a87cd3c6cdf1211649408e52d31ac - GNU rm: rm (GNU coreutils) 9.10 (SHA-256 af8e667181be4f25e27740c1c9ab16190b1b818bada52c42d0a1b3a450de8c7f)
- Measured runs: 20 per mode and scenario, after one warm-up
- Tree fixture: 10000 empty files in groups of 100
- Raw sample SHA-256:
ec3e827b8f53ca3d6f828c84eaa7dd2e49ccc42c82b919160a545257ecadfdf1
The runtime identity is the SHA-256 of the compilation-input manifest embedded in the measured binary. The exact 121-line raw sample set is checked in and verified against the digest and table below by CI.
| Scenario | Mode | Median time (ms) | 5th-95th percentile (ms) | Median peak RSS (MiB) | Max RSS (MiB) | Time vs GNU rm |
|---|---|---|---|---|---|---|
| single | gnu-rm | 2.943 | 2.129-3.904 | 1.621 | 1.633 | 1.00x |
| single | delegate | 5.442 | 4.793-6.385 | 1.746 | 1.758 | 1.85x |
| single | trash | 4.351 | 4.012-5.308 | 0.674 | 0.816 | 1.48x |
| tree | gnu-rm | 515.079 | 441.697-615.420 | 1.633 | 1.758 | 1.00x |
| tree | delegate | 521.433 | 429.786-631.781 | 1.744 | 1.758 | 1.01x |
| tree | trash | 65.894 | 25.881-205.970 | 0.688 | 0.820 | 0.13x |
The single fixture is one 4 KiB file. The tree fixture contains 10,000 empty files grouped into 100 directories. Normal warm filesystem caches are retained; the benchmark neither requests root access nor drops system caches.
GNU rm and rmu --delegate perform the same unlink operation. Securely
identifying and pinning GNU rm adds a fixed startup cost that is visible in
the single-file case; tree delegation was effectively identical to GNU rm.
The median Trash-mode tree run returned about 7.8 times faster because it did
not unlink every descendant. That is user-observed command latency, not
identical storage work: the trashed payload still occupies space.
Peak RSS remained below 1.9 MiB in every measured path. Filesystem, storage, cache state, tree shape, security policy, and toolchain can materially change both timing and memory, so rerun the tool on any target environment that matters.
The complete 0.7.1 result remains available for comparison rather than being
rewritten under the new release number. It used the same host, filesystem,
GNU rm, fixture shape, and 20-run method on 2026-09-08T10:35:21Z.
- Historical RMU: rmu 0.7.1 (SHA-256 dda2a9aba4eb3223295e3232885c7a981c60c8be06582e381aa667df210207dc)
- Historical runtime source identity:
ec9f1661f684963fe88c0f5df0e30b16e7f52069539c2d71f59527f2f5d0d3fb - Historical raw sample SHA-256:
d670d9714994c23e2ca479c772e87a3014ff21214ba469be8ab9c561c1b6be76 - Historical 121-line raw sample set
| Version and scenario | Mode | Median time (ms) | 5th-95th percentile (ms) | Median peak RSS (MiB) | Max RSS (MiB) | Time vs GNU rm |
|---|---|---|---|---|---|---|
| 0.7.1 single | gnu-rm | 4.071 | 2.715-4.985 | 1.629 | 1.633 | 1.00x |
| 0.7.1 single | delegate | 6.373 | 4.968-7.706 | 1.695 | 1.758 | 1.57x |
| 0.7.1 single | trash | 5.970 | 3.711-6.890 | 0.689 | 0.816 | 1.47x |
| 0.7.1 tree | gnu-rm | 643.556 | 531.103-818.862 | 1.570 | 1.758 | 1.00x |
| 0.7.1 tree | delegate | 668.114 | 546.467-746.974 | 1.746 | 1.758 | 1.04x |
| 0.7.1 tree | trash | 89.950 | 29.780-179.282 | 0.635 | 0.816 | 0.14x |