Improve text log view performance with cached indexing and virtualized rendering#12707
Open
vaishanth-rmrj wants to merge 1 commit into
Open
Improve text log view performance with cached indexing and virtualized rendering#12707vaishanth-rmrj wants to merge 1 commit into
vaishanth-rmrj wants to merge 1 commit into
Conversation
Author
|
Hi @oxkitsune, any updates on this PR? Let me know if there are any issues. Thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related
What
Improve text log view performance for large numbers of log entries by replacing the eager per-frame expansion path with a cached, virtualized one.
Previously, the text log view eagerly expanded all matching
TextLogdata into a flat in-memory list, sorted the entire list, recalculated row heights from full text bodies, and rendered through the old heterogeneous row path. That approach works for small recordings, but it becomes expensive when a recording contains many log rows or large multi-line messages.This PR introduces a store-level
TextLogCacheplus a per-viewTextLogProjectionStateso the view can work from lightweight row metadata instead of eagerly materializing every visible row body on every frame.Main changes:
Add
TextLogCache, which indexes text-log chunks once and stores lightweight per-row metadata:Support incremental append-only updates in the cache, while falling back to a rebuild for non-additive store edits.
Add a per-view projection that:
Switch rendering to
egui_tablewith a table delegate that:Simplify
TextLogSystemso it remains responsible for discoverability ofTextLogentities, while the view owns cached loading/projection logic.Add unit tests covering:
This is intended to preserve existing user-visible behavior while making large text-log views much more responsive.
Local validation:
cargo check -p re_view_text_logcargo test -p re_view_text_logBoth passed locally.
Breaking changes:
Migration guide: