Vito Sansevero
40c89625b9
perf(images): add a settled output to the listing without a walk ( #348 , PR 2)
...
Live test: each landing in a 20,000-file folder cost a full walk (~0.4 s of
GIL) plus a full workspace rebuild, so Images reads during a run took up to
2.1 s. The monitor's report now patches the stored listing instead.
- output_settled (the monitor hop's target) slices the file's part below
the root in its own case (relative_part; Windows compares folded), and
_run_adds places one root's pending files in one executor batch:
_settled_entry applies the walk's filters (suffix, thumbnails, depth,
symlink by lstat; macOS on-disk spelling), insert_entry puts the
(Path, mtime) entry where the newest-first sort does, add_folder copies
the folder sets. Stored only when no walk started and no drop happened
meanwhile; walked_at is untouched, so the 30 s refresh still walks.
- Anything inexact marks the root dirty and walks as before: a running
walk, an unsliceable path, a failed lstat, a tie in mtime, the cap, an
unexpected error. Rescan, the refresh, the warm-up and invalidation stay
full walks; a walk start forgets the pending adds.
- The workspace caches follow a patched listing by entry identity
(listing_delta): only added values are built, the newest order places
them by bisection, the favorites lookup is copied and extended.
Synthetic 20,000 files: per landing 252 ms (walk + full build) -> 18 ms
(3 ms add + 15 ms warm build).
2026-10-26 14:44:27 -07:00
..
2026-10-26 11:46:54 -07:00
2026-10-25 19:03:35 -07:00
2026-10-17 13:14:02 -07:00
2026-10-25 18:25:20 -07:00
2026-10-25 18:25:20 -07:00
2026-10-26 07:35:21 -07:00
2026-02-07 08:30:09 -08:00
2026-10-25 18:25:20 -07:00
2026-10-17 23:26:37 -07:00
2026-10-22 10:36:58 -07:00
2026-10-19 17:26:37 -07:00
2026-10-23 11:09:12 -07:00
2026-10-23 11:09:12 -07:00
2026-10-22 21:39:01 -07:00
2026-10-08 18:53:11 -07:00
2026-10-23 11:09:12 -07:00
2026-10-26 07:35:21 -07:00
2026-10-23 14:19:11 -07:00
2026-10-22 07:19:53 -07:00
2026-10-25 19:03:35 -07:00
2026-10-22 10:36:58 -07:00
2026-10-23 14:19:11 -07:00
2026-10-24 21:00:30 -07:00
2026-10-25 10:17:07 -07:00
2026-10-26 11:46:54 -07:00
2026-10-17 08:00:42 -07:00
2026-10-24 06:50:53 -07:00
2026-10-24 05:28:44 -07:00
2026-10-24 21:00:30 -07:00
2026-10-21 02:25:25 -07:00
2026-10-26 14:44:27 -07:00
2026-10-24 12:54:09 -07:00
2026-10-21 04:18:28 -07:00
2026-10-17 08:00:42 -07:00
2026-10-25 10:50:48 -07:00
2026-10-25 10:17:07 -07:00
2026-10-17 08:00:42 -07:00
2026-10-23 01:38:36 -07:00
2026-10-22 10:36:58 -07:00
2026-10-23 18:07:14 -07:00
2026-10-24 21:00:30 -07:00
2026-10-22 07:19:53 -07:00
2026-10-24 06:50:53 -07:00
2026-10-26 12:28:56 -07:00
2026-10-17 08:00:42 -07:00
2026-10-22 10:36:58 -07:00
2026-10-17 23:26:37 -07:00
2026-10-21 23:10:57 -07:00
2026-10-23 03:24:20 -07:00
2026-10-23 11:09:12 -07:00
2026-10-08 18:53:11 -07:00
2026-10-22 21:39:01 -07:00
2026-10-24 21:00:30 -07:00
2026-10-24 20:39:08 -07:00
2026-10-19 11:10:47 -07:00
2026-10-23 04:59:18 -07:00
2026-10-22 07:19:53 -07:00
2026-10-24 05:28:44 -07:00
2026-10-17 16:42:07 -07:00
2026-10-25 10:17:07 -07:00
2026-10-08 18:53:11 -07:00
2026-10-17 23:26:37 -07:00
2026-10-17 23:26:37 -07:00
2026-10-19 11:10:47 -07:00
2026-10-17 19:51:22 -07:00
2026-10-17 19:51:22 -07:00
2026-10-17 23:26:37 -07:00
2026-10-17 19:51:22 -07:00
2026-10-19 11:10:47 -07:00
2026-10-17 16:42:07 -07:00
2026-10-17 23:26:37 -07:00
2026-10-25 10:17:07 -07:00
2026-10-26 07:35:21 -07:00
2026-10-17 23:26:37 -07:00
2026-10-19 11:10:47 -07:00
2026-10-17 23:26:37 -07:00
2026-10-17 23:26:37 -07:00
2026-10-17 23:26:37 -07:00
2026-10-23 02:36:07 -07:00
2026-10-17 23:26:37 -07:00
2026-10-17 16:42:07 -07:00
2026-10-17 05:31:24 -07:00
2026-10-26 14:44:27 -07:00
2026-10-23 13:15:06 -07:00
2026-10-19 20:56:51 -07:00
2026-10-19 20:56:51 -07:00
2026-10-25 18:25:20 -07:00
2026-10-08 18:53:11 -07:00
2026-10-21 04:18:28 -07:00
2026-10-18 17:17:05 -07:00
2026-10-21 02:25:25 -07:00
2026-10-17 23:26:37 -07:00
2026-10-21 10:55:35 -07:00
2026-10-21 09:10:18 -07:00
2026-10-25 19:03:35 -07:00
2026-10-26 12:28:56 -07:00
2026-10-21 00:53:04 -07:00
2026-10-22 21:39:01 -07:00
2026-10-24 12:54:09 -07:00
2026-10-23 00:52:00 -07:00
2026-10-19 09:54:29 -07:00
2026-10-23 11:09:12 -07:00
2026-10-21 10:55:35 -07:00
2026-10-21 04:18:28 -07:00
2026-10-19 09:54:29 -07:00
2026-10-22 10:36:58 -07:00
2026-10-23 11:09:12 -07:00
2026-10-24 05:28:44 -07:00
2026-10-25 10:17:07 -07:00
2026-10-23 16:58:06 -07:00
2026-10-24 12:54:09 -07:00
2026-10-24 12:54:09 -07:00
2026-10-24 20:39:08 -07:00
2026-10-24 12:54:09 -07:00
2026-10-18 20:03:15 -07:00
2026-10-23 14:19:11 -07:00
2026-10-23 11:09:12 -07:00
2026-10-08 18:53:11 -07:00
2026-10-25 11:27:57 -07:00
2026-10-25 12:53:26 -07:00
2026-10-24 05:28:44 -07:00
2026-10-24 20:39:08 -07:00
2026-10-23 14:19:11 -07:00
2026-02-07 12:36:11 -08:00
2026-10-22 10:36:58 -07:00
2026-10-08 18:53:11 -07:00
2026-10-07 13:52:09 -07:00
2026-10-24 06:50:53 -07:00
2026-10-17 08:00:42 -07:00
2026-10-08 18:53:11 -07:00
2026-10-17 08:00:42 -07:00
2026-10-17 19:51:22 -07:00
2026-10-21 10:55:35 -07:00
2026-10-23 14:19:11 -07:00
2026-10-17 08:00:42 -07:00
2026-10-17 08:00:42 -07:00
2026-10-23 14:19:11 -07:00
2026-10-23 14:19:11 -07:00
2026-10-22 07:19:53 -07:00
2026-10-17 08:00:42 -07:00
2026-10-17 08:00:42 -07:00
2026-10-08 18:53:11 -07:00
2026-10-25 19:03:35 -07:00
2026-10-17 06:47:46 -07:00
2026-10-17 19:51:22 -07:00
2026-10-23 11:09:12 -07:00
2026-10-18 20:03:15 -07:00
2026-04-10 12:49:59 -07:00
2026-10-08 18:53:11 -07:00
2026-10-17 16:42:07 -07:00
2026-10-23 11:09:12 -07:00
2026-10-25 10:17:07 -07:00
2026-10-26 07:35:21 -07:00
2026-10-25 10:17:07 -07:00
2026-10-23 18:07:14 -07:00
2026-10-25 19:03:35 -07:00
2026-10-23 18:07:14 -07:00
2026-10-23 18:07:14 -07:00
2026-10-23 14:19:11 -07:00
2026-10-23 18:07:14 -07:00
2026-10-25 19:03:35 -07:00
2026-10-26 07:35:21 -07:00
2026-10-21 09:10:18 -07:00
2026-10-23 14:19:11 -07:00
2026-10-08 18:53:11 -07:00
2026-10-24 12:54:09 -07:00
2026-10-08 18:53:11 -07:00
2026-10-17 06:47:46 -07:00
2026-10-25 10:17:07 -07:00
2026-10-24 21:00:30 -07:00
2026-10-26 11:46:54 -07:00
2026-10-24 21:00:30 -07:00
2026-10-24 21:00:30 -07:00
2026-10-26 11:46:54 -07:00
2026-10-24 21:00:30 -07:00
2026-10-25 19:03:35 -07:00
2026-10-08 18:53:11 -07:00
2026-10-18 10:01:19 -07:00
2026-10-08 18:53:11 -07:00
2026-10-22 10:21:02 -07:00
2026-10-08 18:53:11 -07:00
2026-10-22 07:19:53 -07:00
2026-10-24 06:50:53 -07:00
2026-10-24 06:50:53 -07:00
2026-10-24 06:50:53 -07:00
2026-10-24 06:50:53 -07:00
2026-10-23 01:58:02 -07:00
2026-10-23 07:49:39 -07:00