RFR: 8293836: Rendering performance degradation at bottom of TableView with many rows [v2]
Marius Hanl
mhanl at openjdk.org
Thu Jun 1 20:37:17 UTC 2023
On Tue, 30 May 2023 10:39:28 GMT, Johan Vos <jvos at openjdk.org> wrote:
>> Only update the VirtualFlow parameters in case the size of a cell has changed.
>>
>> The fixes for JDK-8298728 and JDK-8277785 introduced an unconditional recalculation in case the size of a cell is set. This recalculation is only needed in case the size of that specific cell has changed.
>> Fix for JDK-8293836
>
> Johan Vos has updated the pull request incrementally with one additional commit since the last revision:
>
> remove newline
Have one question. Otherwise looks good to me. Tested with a lot of data + with and without fixed cell size.
modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java line 3083:
> 3081: if (itemSizeCache.size() > cellIndex) {
> 3082: Double oldSize = itemSizeCache.get(cellIndex);
> 3083: double newSize = isVertical() ? cell.getLayoutBounds().getHeight() : cell.getLayoutBounds().getWidth();
If we have a fixed cell size set, can we save the call to get the layout bounds here?
Since this is also done above in `getOrCreateCellSize` (`getFixedCellSize()`).
And the layout bounds are calculated lazily, so this may improve the performance here as well.
modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java line 3085:
> 3083: double newSize = isVertical() ? cell.getLayoutBounds().getHeight() : cell.getLayoutBounds().getWidth();
> 3084: itemSizeCache.set(cellIndex, newSize);
> 3085: if ((oldSize != null) && !oldSize.equals(newSize)) {
Minor: Braces are not needed here
modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java line 3088:
> 3086: int currentIndex = computeCurrentIndex();
> 3087: double oldOffset = computeViewportOffset(getPosition());
> 3088: if ((cellIndex == currentIndex) && (oldOffset != 0)) {
Minor: Braces are not needed here
-------------
PR Review: https://git.openjdk.org/jfx/pull/1098#pullrequestreview-1456254974
PR Review Comment: https://git.openjdk.org/jfx/pull/1098#discussion_r1213648251
PR Review Comment: https://git.openjdk.org/jfx/pull/1098#discussion_r1213645083
PR Review Comment: https://git.openjdk.org/jfx/pull/1098#discussion_r1213645163
More information about the openjfx-dev
mailing list