Nic Boet
4b098fb760
perf: replace O(n) linear frame seeks with O(log n) binary search
...
Replace two linear scans in event playback seeking:
- seek(): O(n) walk from frame 0 replaced with std::lower_bound on
timestamp. Falls back to last frame if target is past end.
- processCommand(CMD_SEEK): O(n) estimate-then-walk replaced with
std::upper_bound on offset, then step back one. Handles edge cases
where offset lands before first frame or past last frame.
For a 10-minute event at 30fps (~18,000 frames), worst case drops
from 18,000 comparisons to ~14 (log2).
2026-02-09 12:44:59 -06:00
..
2026-01-31 12:43:03 -05:00
2026-02-04 20:44:17 -05:00
2024-10-26 14:29:40 -04:00
2026-02-02 20:34:33 -05:00
2026-02-03 10:18:49 -05:00
2026-02-03 10:18:49 -05:00
2026-02-02 20:44:01 -05:00
2026-02-03 10:18:49 -05:00
2026-02-03 10:18:49 -05:00
2026-02-04 20:44:17 -05:00
2024-10-26 14:29:40 -04:00
2026-02-03 10:18:49 -05:00
2025-07-05 08:09:09 -04:00
2026-02-03 12:10:41 -05:00
2026-01-28 15:15:59 -05:00
2026-02-09 12:44:59 -06:00
2026-01-05 16:37:30 -05:00
2026-02-04 22:51:21 -05:00
2026-01-26 14:40:10 -05:00
2026-02-03 11:01:59 -05:00
2025-09-22 09:52:25 -04:00
2026-02-03 11:03:17 -05:00
2026-02-05 09:08:02 -05:00
2026-01-26 14:40:10 -05:00
2026-02-03 11:36:53 -05:00
2026-02-02 23:24:08 -05:00
2026-02-03 11:42:14 -05:00
2026-02-07 22:39:28 -05:00
2026-02-07 22:32:56 -05:00
2025-07-19 14:18:32 -04:00
2025-07-19 14:18:32 -04:00
2026-02-03 11:49:58 -05:00
2026-02-03 12:09:44 -05:00
2026-01-29 18:50:42 -05:00
2026-01-29 18:50:42 -05:00
2026-01-05 18:30:08 -05:00
2026-01-14 13:28:52 -05:00
2026-02-02 14:34:19 +00:00
2026-01-31 18:47:37 -05:00
2026-02-07 15:05:58 -06:00
2026-02-04 22:55:50 -05:00
2026-02-04 17:40:26 -05:00
2026-02-07 22:52:15 -05:00
2026-01-31 19:37:08 -05:00
2026-02-05 09:07:22 -05:00
2025-09-18 14:48:52 -04:00
2026-02-02 20:53:00 -05:00
2024-10-29 13:30:29 -04:00
2026-02-07 23:41:48 -05:00
2026-02-07 23:41:48 -05:00
2026-02-07 23:41:48 -05:00
2026-02-07 23:41:48 -05:00
2026-02-03 12:13:29 -05:00
2025-02-26 21:04:32 +11:00
2025-02-26 21:04:32 +11:00
2026-02-04 17:41:37 -05:00
2024-09-14 11:06:55 +10:00
2026-02-03 12:25:21 -05:00
2025-09-18 10:07:50 -04:00
2026-02-03 12:34:21 -05:00
2026-02-03 12:45:56 -05:00
2026-02-03 12:47:14 -05:00
2026-01-09 11:43:15 -05:00
2026-01-05 13:36:16 +00:00
2026-01-31 12:43:03 -05:00
2026-01-31 16:19:38 -05:00
2026-01-31 16:19:38 -05:00
2026-01-30 15:30:40 -05:00
2026-01-30 14:49:53 -05:00
2026-01-30 14:49:53 -05:00
2026-01-31 12:43:03 -05:00
2026-01-31 12:43:03 -05:00
2026-02-03 12:28:30 -05:00
2026-02-03 13:34:17 -05:00
2026-01-30 15:09:02 -05:00
2026-01-30 15:09:02 -05:00
2026-02-03 12:30:06 -05:00
2026-02-03 16:44:50 -05:00
2024-10-22 18:32:31 -04:00
2026-02-03 16:47:43 -05:00
2025-07-05 08:09:09 -04:00
2025-07-05 08:09:09 -04:00
2026-01-24 11:17:57 -05:00
2026-01-24 11:17:57 -05:00
2026-02-03 12:24:07 -05:00
2025-08-05 14:13:39 -04:00
2026-02-04 20:45:46 -05:00
2025-06-26 14:53:38 -04:00
2026-02-02 23:26:20 -05:00
2025-09-18 09:27:31 -04:00
2026-02-07 22:52:15 -05:00
2026-02-04 17:40:26 -05:00
2026-02-04 17:40:26 -05:00
2026-01-05 16:36:36 -05:00
2026-01-05 16:36:36 -05:00
2026-01-15 16:31:22 -05:00
2026-01-05 16:38:35 -05:00
2025-12-31 22:29:37 +11:00