On Thu, 20 Apr 2023 07:17:39 GMT, Johan Vos <j...@openjdk.org> 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