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