vc=81 — perf-audit app-side batch (search debounce + feed-merge memoize)
Search: the reactive cache-preview filter no longer runs on the main thread on every keystroke. It walked the whole cached-results pool (thousands of items on a heavy user) inline; now each keystroke debounces ~150ms and the scan runs on Dispatchers.Default. A submit cancels the pending preview so a late scan can't clobber live results. Feed: mergeFromCache memoizes the relative-upload-date parse by string, so the recency regex runs once per distinct "N days ago" value instead of once per item (~3000 per merge on a 200-sub feed) — across hydration, every refresh, and each background-enrichment emit. No behavior change.
This commit is contained in:
parent
d9e5addb0b
commit
f51b4fbb77
3 changed files with 79 additions and 22 deletions
|
|
@ -9,6 +9,19 @@ const val STRAW_SDK_TARGET = 35
|
|||
|
||||
// Sulkta fork — Straw
|
||||
//
|
||||
// vc=81 / 0.1.0-CO — perf-audit app-side batch (no behavior change):
|
||||
// * Search: the reactive cache-preview filter no longer runs on the
|
||||
// main thread on every keystroke. It walked the entire cached-
|
||||
// results pool (thousands of items on a heavy user) inline; now each
|
||||
// keystroke debounces ~150ms and the scan runs on Dispatchers.Default.
|
||||
// A submit cancels the pending preview so it can't clobber live
|
||||
// results.
|
||||
// * Subscription feed: the merge memoizes the relative-upload-date
|
||||
// parse by string, so the recency regex runs once per distinct
|
||||
// "N days ago" value instead of once per item (~3000 per merge on a
|
||||
// 200-sub feed) — across hydration, every refresh, and each
|
||||
// background-enrichment emit.
|
||||
//
|
||||
// vc=80 / 0.1.0-CN — strawcore extraction perf (Rust batch):
|
||||
// * The extractor borrows the streamingData subtree out of the Android
|
||||
// + iOS player responses instead of deep-cloning the largest part of
|
||||
|
|
@ -121,6 +134,6 @@ const val STRAW_SDK_TARGET = 35
|
|||
// vc=19 / 0.1.0-AE — rust pipeline cutover. Extraction via
|
||||
// strawcore-core (Sulkta-OSS/strawcore) via the UniFFI wrapper; no
|
||||
// NewPipeExtractor in the runtime path.
|
||||
const val STRAW_VERSION_CODE = 80
|
||||
const val STRAW_VERSION_NAME = "0.1.0-CN"
|
||||
const val STRAW_VERSION_CODE = 81
|
||||
const val STRAW_VERSION_NAME = "0.1.0-CO"
|
||||
const val STRAW_APPLICATION_ID = "com.sulkta.straw"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue