On Sun, 23 Feb 2020 01:05:25 GMT, Nir Lisker <nlis...@openjdk.org> wrote:

>> https://bugs.openjdk.java.net/browse/JDK-8185886
>> 
>> Optimisation to ExpressionHelper.Generic class to use Sets rather than 
>> Arrays to improve listener removal speed.
>> 
>> This was due to the removal of listeners in TableView taking up to 50% of 
>> CPU time on the JavaFX Application thread when scrolling/adding rows to 
>> TableViews.
>> 
>> This may alleviate some of the issues seen here:
>> 
>> TableView has a horrific performance with many columns #409
>> https://github.com/javafxports/openjdk-jfx/issues/409#event-2206515033
>> 
>> JDK-8088394 : Huge memory consumption in TableView with too many columns
>> JDK-8166956: JavaFX TreeTableView slow scroll performance
>> JDK-8185887: TableRowSkinBase fails to correctly virtualise cells in 
>> horizontal direction
>> 
>> OpenJFX mailing list thread: TableView slow vertical scrolling with 300+ 
>> columns
>> https://mail.openjdk.java.net/pipermail/openjfx-dev/2020-January/024780.html
> 
> modules/javafx.base/src/main/java/com/sun/javafx/binding/ExpressionHelper.java
>  line 283:
> 
>> 282:             final Map<InvalidationListener, Integer> 
>> curInvalidationList = new LinkedHashMap<>(invalidationListeners);
>> 283:             final Map<ChangeListener<? super T>, Integer> curChangeList 
>> = new LinkedHashMap<>(changeListeners);
>> 284: 
> 
> You only need the entry set, so you don't need to copy the map, just the set.

Thanks, yes the EntrySet would make more sense here. I'll fix that up.

-------------

PR: https://git.openjdk.java.net/jfx/pull/108

Reply via email to