Reduce logs memory and CPU consumption#662
Merged
micheal-parks merged 4 commits intomainfrom May 8, 2026
Merged
Conversation
🦋 Changeset detectedLatest commit: 2f40292 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
micheal-parks
commented
May 8, 2026
| class="relative h-[calc(100%-33px)]" | ||
| > | ||
| {@render children()} | ||
| {#if isOpen} |
Member
Author
There was a problem hiding this comment.
Main optimization. The logs panel can churn the dom pretty hard when errors are flooding in at 30-60fps.
micheal-parks
commented
May 8, 2026
| * dance otherwise flips `useParentName` to `undefined` and back, remounting | ||
| * every `<Portal id={parent.current}>` subtree per tick. | ||
| */ | ||
| export const setParent = (entity: Entity, name: string | undefined): void => { |
Member
Author
There was a problem hiding this comment.
Smaller but important optimization, prevents entire tree remounts under certain situations
micheal-parks
commented
May 8, 2026
| // Hot path is `Map.set` (or in-place `count++`) plus `version++` — no | ||
| // array allocation per add. The display arrays are materialized lazily | ||
| // in `$derived.by`, so a closed logs panel costs nothing. | ||
| const entries = new Map<string, Log>() |
Member
Author
There was a problem hiding this comment.
Second major optimization. Since deriveds are read lazily, there should be barely any CPU activity for logs unless a user has opened the logs tab.
Contributor
|
mattmacf98
approved these changes
May 8, 2026
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.
After profiling with claude I discovered that the current logs setup is eating a shocking amount of CPU and memory. It's likely causing a lot of performance issues I'm witnessing on the Quest headset. This PR substantially reduces the problem, with the following graph representing profiles before / after:
Details of the changes are in comments.