perf: runtime performance pass, phase 1 (DB pragmas, batched scan writes)
Executes docs/superpowers/specs/2026-07-07-runtime-performance-pass-design.md: - database.rs: every pooled connection now runs WAL + synchronous=NORMAL + busy_timeout=5000 + foreign_keys=ON via with_init (in-memory pools get the latter two). Fixes the SQLITE_BUSY failure mode under the parallel scanner and makes FK cascades work on every connection, not just whichever one last ran the old one-shot pragma in delete_folder. - database.rs: prepare_cached for the per-video info_cache queries; new info_cache_put_many bulk upsert (single transaction) replaces the per-row autocommitted info_cache_put, with a round-trip unit test. - library.rs: enrich_with_cache collects cache misses and flushes them once per channel; title sort uses sort_by_cached_key. - app.rs: Title/ChannelAsc sorts use sort_by_cached_key instead of allocating two lowercased strings per comparison. - Cargo.toml: panic=abort in release (crash-hook still fires; Cargo forces unwind for test harnesses). PACKAGING.md documents the local RUSTFLAGS target-cpu=native opt-in; repo stays portable. - .gitignore: catacomb.db-wal / catacomb.db-shm sidecars. Verified: 146 tests pass (integration suite exercises the pragmas end-to-end), x86_64-pc-windows-gnu check green, live smoke shows journal_mode=wal + batched cache writes landing correct rows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
891b1e0d3c
commit
d4bed019b2
7 changed files with 299 additions and 34 deletions
|
|
@ -75,6 +75,14 @@ codegen-units = 1
|
|||
# runtime; those are less informative without symbols but usable with
|
||||
# addr2line against the unstripped build artifact.
|
||||
strip = "debuginfo"
|
||||
# No unwinding tables/landing pads: smaller binary, marginally faster hot
|
||||
# paths. The crash handler (crash.rs panic hook) still fires before the
|
||||
# abort, so crash logging is preserved. Cargo forces `panic=unwind` for
|
||||
# test/bench harnesses automatically, so `cargo test --release` and the
|
||||
# #[cfg(test)] catch_unwind in crash.rs are unaffected. Tradeoff: a panic
|
||||
# in a parallel scan worker aborts the process instead of one worker —
|
||||
# acceptable, those workers treat all fallible I/O with .ok() already.
|
||||
panic = "abort"
|
||||
|
||||
# ── Debian / Ubuntu package (cargo-deb) ──────────────────────────────────────
|
||||
# `cargo deb` reads this to build a .deb. Runtime deps mirror the PKGBUILD:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue