RFR: 8197991: Selecting many items in a TableView is very slow [v5]
Kevin Rushforth
kcr at openjdk.java.net
Thu Jan 6 21:36:23 UTC 2022
On Thu, 6 Jan 2022 08:17:53 GMT, Abhinay Agarwal <duke at openjdk.java.net> wrote:
>> This work improves the performance of `MultipleSelectionModel` over large data sets by caching some values and avoiding unnecessary calls to `SelectedIndicesList#size`. It further improves the performance by reducing the number of iterations required to find the index of an element in the BitSet.
>>
>> The work is based on [an abandoned patch](https://github.com/openjdk/jfx/pull/127) submitted by @yososs
>>
>> There are currently 2 manual tests for this fix.
>
> Abhinay Agarwal has updated the pull request incrementally with two additional commits since the last revision:
>
> - Remove commented out method. Document constructors.
> - Add tests
The fix looks good. I left a few comments on the tests.
modules/javafx.controls/src/test/java/test/javafx/scene/control/MultipleSelectionModelImplTest.java line 1427:
> 1425: assertTrue(model.isSelected(2));
> 1426: assertTrue(model.isSelected(5));
> 1427: assertFalse(model.isSelected(0));
I recommend to also check the size.
modules/javafx.controls/src/test/java/test/javafx/scene/control/MultipleSelectionModelImplTest.java line 1436:
> 1434: model.clearSelection();
> 1435:
> 1436: assertTrue(model.getSelectedIndices().isEmpty());
I recommend to also check the size.
tests/manual/controls/SelectTableViewTest.java line 40:
> 38: public class SelectTableViewTest extends Application {
> 39:
> 40: final int ROW_COUNT = 700_000;
This count is too large, even with the fix. I recommend changing it to something smaller (no more than `70_000`, which matches what you did for `SelectListViewTest`).
tests/manual/controls/SelectTableViewTest.java line 101:
> 99: long t = System.currentTimeMillis();
> 100: tableView.getSelectionModel().selectAll();
> 101: System.out.println("time:"+ (System.currentTimeMillis() - t));
Minor: space before the `+` here and a few places below (also in the other test as noted).
-------------
PR: https://git.openjdk.java.net/jfx/pull/673
More information about the openjfx-dev
mailing list