Skip to content

Conversation

@everpcpc
Copy link

Optimize PagedReader Performance for Large Page Counts

Problem

PagedReader becomes very slow with high CPU usage when handling books with 100+ pages.

Changes

  1. Virtual scrolling: Only render 5 carousel items (current page ±2) instead of all pages

    • Reduces DOM nodes from N to 5 (95%+ reduction for large books)
  2. Optimized page lookup: Use Map cache instead of nested loops in toSpreadIndex()

    • Reduces lookup complexity from O(n²) to O(1)

Impact

  • Significantly reduced CPU usage and memory footprint
  • Smooth navigation even with 200+ page books

@everpcpc everpcpc marked this pull request as ready for review October 11, 2025 06:30
@everpcpc everpcpc changed the title refactor: optimize PagedReader for large pages refactor(webui): optimize PagedReader for large pages Oct 11, 2025
@everpcpc everpcpc changed the title refactor(webui): optimize PagedReader for large pages perf(webui): optimize PagedReader for large pages Oct 11, 2025
@everpcpc everpcpc changed the title perf(webui): optimize PagedReader for large pages perf(webui): optimize PagedReader for large page counts Oct 11, 2025
@gotson
Copy link
Owner

gotson commented Oct 13, 2025

The UI is being rewritten, so i am not accepting any PRs on the current webui.

@gotson gotson added the consider Not sure yet if this makes sense or not label Oct 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consider Not sure yet if this makes sense or not

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants