> Fixes [8202066](https://bugs.openjdk.org/browse/JDK-8202066) > > `selectRows(int, int)` calls `clearSelection(int)` in a loop which is slow. > There are two cases to consider: `minRow == maxRow` and `minRow < maxRow`. > > In both cases, all indices such that `selectedIndex < minRow || selectedIndex > > maxRow` are cleared. `clearSelection(int)` clears the associated bit and > clears the focus and selected index if operation causes the selected indices > to be empty. > > **minRow == maxRow** > > `select(int)` updates the focus and selected index if the input argument is > not already selected. Otherwise, it is a no-up. Therefore, clearing all the > selected indices with `clearSelection(int)` and calling `select(minRow)` is > equivalent to `clearAndSelect(minRow)`. > > **minRow < maxRow** > > `selectRange(int, int)` resolves to `selectIndices(int, int...)`, which > updates the focus and selected index to the last valid index, regardless if > that index was already selected. Therefore, the focus and selected index > prior to `selectRange` is irrelevant. > > > Results are encouraging: > > [StringPlayground3.java](https://github.com/user-attachments/files/26034143/StringPlayground3.java) > > Mainline: > > Starting Benchmark with 5500 elements! > Robot finished in: 85ms > UI Unfroze after: 33108ms > Total Operation: 33193ms > > With change: > > Starting Benchmark with 5500 elements! > Robot finished in: 87ms > UI Unfroze after: 1ms > Total Operation: 88ms
chuckyschluz has updated the pull request incrementally with one additional commit since the last revision: update unit test, copyrights ------------- Changes: - all: https://git.openjdk.org/jfx/pull/2109/files - new: https://git.openjdk.org/jfx/pull/2109/files/3461b78f..67be4abf Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=2109&range=02 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=2109&range=01-02 Stats: 8 lines in 2 files changed: 0 ins; 5 del; 3 mod Patch: https://git.openjdk.org/jfx/pull/2109.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/2109/head:pull/2109 PR: https://git.openjdk.org/jfx/pull/2109
