Follow-up to #4917, which grouped perf optimizations in the data, event,
sort and filter paths. This series is the vertical virtual renderer, kept separate on purpose.
Background: I maintain a custom renderer VirtualDomVertical that is faster than stock and correct for variable-height rows. I did this for perf but also to fix some renderer issues. Seven correctness fixes and
one call-count change, in five PRs. A full renderer rewrite came out of the same work; I am
not proposing it, and its PR is closed.
| # |
PR |
Kind |
Touches |
Source lines |
| 1 |
#4929: record renderMode as a string for custom renderer classes |
fix |
RowManager.js |
13 |
| 2 |
#4930: align scrollToRowPosition with the row's actual offsetTop |
fix |
rendering/Renderer.js |
33 |
| 3 |
#4931: four state-tracking fixes in the vertical virtual renderer |
fix |
VirtualDomVertical.js |
29 |
| 4 |
#4935: disable browser scroll anchoring on the table holder |
fix |
tabulator.scss |
1 |
| 5 |
#4936: clear the render area with replaceChildren() |
perf |
BasicVertical.js, VirtualDomVertical.js |
14 |
All five are drafts so the approach can be agreed before anything is marked ready. Each passes its own CI independently, all stand alone, no perf loss, mutation churn is byte-identical to master at 500k rows. 94 lines of
source in total. The order above is least to most invasive; any one can be taken alone.
#4931 collects the four smallest fixes, one commit each, because reviewing them separately would be annoying. #4932, #4933 and #4934 are closed in favour of it.
Each PR carries its own measurements and caveats. Happy to share the benchmark harness or split anything further.
Follow-up to #4917, which grouped perf optimizations in the data, event,
sort and filter paths. This series is the vertical virtual renderer, kept separate on purpose.
Background: I maintain a custom renderer
VirtualDomVerticalthat is faster than stock and correct for variable-height rows. I did this for perf but also to fix some renderer issues. Seven correctness fixes andone call-count change, in five PRs. A full renderer rewrite came out of the same work; I am
not proposing it, and its PR is closed.
renderModeas a string for custom renderer classesRowManager.jsscrollToRowPositionwith the row's actualoffsetToprendering/Renderer.jsVirtualDomVertical.jstabulator.scssreplaceChildren()BasicVertical.js,VirtualDomVertical.jsAll five are drafts so the approach can be agreed before anything is marked ready. Each passes its own CI independently, all stand alone, no perf loss, mutation churn is byte-identical to master at 500k rows. 94 lines of
source in total. The order above is least to most invasive; any one can be taken alone.
#4931 collects the four smallest fixes, one commit each, because reviewing them separately would be annoying. #4932, #4933 and #4934 are closed in favour of it.
Each PR carries its own measurements and caveats. Happy to share the benchmark harness or split anything further.