> 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

Reply via email to