Skip to content

servershell: speed up result table rendering#457

Open
seqizz wants to merge 1 commit into
innogames:mainfrom
seqizz:g_fasterrender
Open

servershell: speed up result table rendering#457
seqizz wants to merge 1 commit into
innogames:mainfrom
seqizz:g_fasterrender

Conversation

@seqizz

@seqizz seqizz commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Selecting and working on many objects is slow because of the current per-row jQuery construction and per-cell linear scans. This commit tries to speed up via multiple changes. Feels much snappier but don't have a solid benchmark yet.

Mostly work of Opus, still sending all the inputs through escape_html to avoid XSS.

  • Rewrite update_result/get_row_html to build the body as one HTML string (single innerHTML) instead of per-element jQuery construction.
  • Precompute O(1) lookups per redraw (object/attribute/deleted/changed) instead of linear scans per cell.
  • Snapshot the servershell Proxy properties used in the loop (each access dispatches events).
  • Event delegation for inline-edit and relation links instead of per-cell/per-link handlers.
  • set_selected O(rows) instead of O(selected * rows).
  • Fix delete to redraw once instead of once per selected object.

Selecting and working on many objects is slow because of the current
per-row jQuery construction and per-cell linear scans. This commit tries
to speed up via multiple changes. Feels much snappier but don't have a
solid benchmark yet.

Mostly work of Opus, still sending all the inputs through escape_html
to avoid XSS.

- Rewrite update_result/get_row_html to build the body as one HTML string (single innerHTML) instead of per-element jQuery construction.
- Precompute O(1) lookups per redraw (object/attribute/deleted/changed) instead of linear scans per cell.
- Snapshot the servershell Proxy properties used in the loop (each access dispatches events).
- Event delegation for inline-edit and relation links instead of per-cell/per-link handlers.
- set_selected O(rows) instead of O(selected * rows).
- Fix delete to redraw once instead of once per selected object.
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.

1 participant