On Wed, 25 Mar 2026 00:48:54 GMT, Charlie Schlosser <[email protected]> wrote:

> Looks good.
> 
> While testing, I also tested a `sort` operation with a big selection. This 
> operation is still very slow, but there is other code involved. If you want, 
> feel free to check after this PR is merged! :)

Well, the sorting mystery has been solved! Same idea applies to `TreeTableView`.


--- a/modules/javafx.controls/src/main/java/javafx/scene/control/TableView.java
+++ b/modules/javafx.controls/src/main/java/javafx/scene/control/TableView.java
@@ -31,6 +31,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -1741,8 +1742,9 @@ public class TableView<S> extends Control {

                 List<TablePosition<S, ?>> removed = new ArrayList<>();
                 if (prevState != null) {
+                    Set<TablePosition<S, ?>> newStateSet = new 
HashSet<>(newState);
                     for (TablePosition<S, ?> prevItem : prevState) {
-                        if (!newState.contains(prevItem)) {
+                        if (!newStateSet.contains(prevItem)) {
                             removed.add(prevItem);
                         }
                     }


master:

Sort 512 took 0ms
Sort 1024 took 2ms
Sort 2048 took 4ms
Sort 4096 took 13ms
Sort 8192 took 48ms
Sort 16384 took 198ms
Sort 32768 took 836ms
Sort 65536 took 4291ms
Sort 131072 took 19561ms

massive diff above applied:

Sort 512 took 0ms
Sort 1024 took 0ms
Sort 2048 took 0ms
Sort 4096 took 0ms
Sort 8192 took 1ms
Sort 16384 took 1ms
Sort 32768 took 2ms
Sort 65536 took 3ms
Sort 131072 took 5ms

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

PR Comment: https://git.openjdk.org/jfx/pull/2100#issuecomment-4122734274

Reply via email to