Skip to content

perf(webui): optimize PagedReader for large page counts - #2102

Closed
everpcpc wants to merge 1 commit into
gotson:masterfrom
everpcpc:fix-reader
Closed

everpcpc wants to merge 1 commit into
gotson:masterfrom
everpcpc:fix-reader

Conversation

@everpcpc

Copy link
Copy Markdown

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

gotson commented Oct 13, 2025

Copy link
Copy Markdown
Owner

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
@gotson

gotson commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Will not be considered as the UI is being rewritten.

@gotson gotson closed this Sep 16, 2026
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

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