Skip to content

v0.1.4

Choose a tag to compare

@jamesarch jamesarch released this 27 Apr 02:37
· 2 commits to perf/optimize-release-and-quality since this release

🚀 Performance (M1 Pro, macOS)

Full Generation Time

RPMs createrepo_rs (4w) createrepo_c (4w) Speedup
10 0.01s 0.10s 10x
100 0.01s 0.11s 11x
500 0.03s 0.12s 4x
1000 0.05s ~0.20s 4x

Worker Scaling (500 RPMs)

Workers createrepo_rs createrepo_c
1 0.05s 0.25s
4 0.03s 0.12s

Compression (500 RPMs, 4w)

Algorithm createrepo_rs Output Size
zstd 0.03s 20KB
gzip 0.03s 40KB
xz 0.11s 20KB
bzip2 0.14s 24KB

🐛 Critical Fix

  • Multi-worker deadlock: Pool channel workers×2 too small, scaled to workers×256

⚡ Optimizations

  • Arc cache avoids full clone on --update
  • SQLite batch transactions for filelists
  • Redundant stat() eliminated
  • XML pre-allocation
  • SHA buffer 8KB→64KB
  • Shared From (-114 lines)
  • Removed unused anyhow dependency

🧪 Benchmark Suite

Added benchmark/ with scripts + Dockerfile for reproducible comparison.

Full Changelog: v0.1.3...v0.1.4