Skip to content

perf(log-panel): use VecDeque for O(1) log pruning#80

Open
SH20RAJ wants to merge 3 commits intomofa-org:mainfrom
SH20RAJ:issue-40-log-buffer-optimization
Open

perf(log-panel): use VecDeque for O(1) log pruning#80
SH20RAJ wants to merge 3 commits intomofa-org:mainfrom
SH20RAJ:issue-40-log-buffer-optimization

Conversation

@SH20RAJ
Copy link
Copy Markdown

@SH20RAJ SH20RAJ commented Mar 29, 2026

Summary

This PR fixes log-panel pruning performance across MoFA apps by replacing front-drain patterns on with queue semantics using .

What changed

  • : switched log buffer to and replaced with pruning.
  • : switched log buffer to and replaced front-drain pruning with .
  • : switched log buffer to , added missing cap (5000), and prunes oldest entries via .

Why

triggers O(n) shifts and can cause periodic UI-thread spikes once buffers are full. Queue-based pruning avoids repeated full shifts and keeps eviction cost effectively O(1) per item.

Notes

  • Could not run in this container because is unavailable ().
  • Behavior/UI is unchanged except bounded memory in debate logs, matching the other two apps.

Closes #40

SH20RAJ added 3 commits March 28, 2026 20:25
Fix typo 'setings' -> 'settings' in the benefits section of TabId enum documentation.
Replace panic-based error handling with Result-based error propagation
and recovery mechanisms to prevent runtime crashes.

Changes:
- node-hub/dora-funasr-nano-mlx/src/main.rs: Handle engine None case gracefully
- apps/mofa-asr/src/screen/mod.rs: Recover from poisoned mutexes in ChatController
- mofa-dora-bridge/src/parser.rs: Use expect with descriptive message in test
- node-hub/dora-gpt-sovits-mlx/src/ssml.rs: Use expect in test

This addresses issue mofa-org#41.
- Replace Vec<String> with VecDeque<String> for log buffers
- Replace front drain operations with pop_front loops
- Add 5000-entry retention cap to mofa-debate logs
- Keep display/filter behavior unchanged

Addresses mofa-org#40
@SH20RAJ
Copy link
Copy Markdown
Author

SH20RAJ commented Mar 29, 2026

Implemented VecDeque-based O(1) front-pruning for log buffers in mofa-fm, mofa-asr, and mofa-debate, plus a retention cap for debate logs. Please review.

@SH20RAJ
Copy link
Copy Markdown
Author

SH20RAJ commented Mar 29, 2026

Checked status: this PR is pending maintainer review/merge from upstream maintainers. I’m available to address feedback quickly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Vec_drain causes O(n) CPU spikes in log panel pruning

1 participant