RFR: 8359599: Calling refresh() for all virtualized controls recreates all cells instead of refreshing the cells [v2]
Marius Hanl
mhanl at openjdk.org
Sun Oct 5 17:14:24 UTC 2025
On Sat, 4 Oct 2025 04:28:19 GMT, John Hendrikx <jhendrikx at openjdk.org> wrote:
> As a side note, even 30-40 ms seems incredibly slow, that's bound to create noticeable input lag or frame skips :/ How many cells were visible? 1000 or 100x1000? If the latter, than 30-40 ms seems okayish.
I agree. One problem here is, that all cells will be updated (via `updateItem`) of a `TableRow`, even if not visible.
I counted all `updateItem` calls, results below.
Code from Benchmark above:
- `TableRow` `updateItem`: 78
- `TableCell` `updateItem`: 7800
39 rows are displayed, and they are updated twice (first with `-1` to reset, then with the actual index). And all rows have 100 cells.
A `TableCell` `updateItem` without any code (no `setText`, no `setGraphic`) is indeed faster, around 10-20ms.
Looking into the code, there are some unnecessary `requestLayout` calls as well.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1830#issuecomment-3369192707
More information about the openjfx-dev
mailing list