On Thu, 20 Apr 2023 07:17:39 GMT, Johan Vos <[email protected]> wrote:
>> modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java
>> line 858:
>>
>>> 856:
>>> 857: @Override protected void invalidated() {
>>> 858: int oldIndex = computeCurrentIndex();
>>
>> I wonder if we can cache the old index somewhere since the _compute..._
>> methods can take some time on big tables.
>
> I think an instance variable makes sense, as the current index is a property
> of a specific VirtualFlow instance.
> That won't help with performance though, as we still need to compute the
> current index in a number of cases. Instead of calling the
> `computeCurrentIndex()` we would then just update the instance variable.
> To fix the issue, we need to reduce the cases where the current index is
> recomputed (or bring it to zero in case the current index can't theoretically
> change) , and this is what #1098 is about -- so your comment probably belongs
> to #1098?
> I'll experiment with instance fields, and try to reduce the computations even
> more.
Agreed. And good idea! I will also do a bunch of tests when I have time. :)
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1099#discussion_r1172228207