> Improve `java/util/concurrent/CopyOnWriteArrayList` by eliminating needless 
> cloning of Object[0] instances. This cloning is intended to prevent callers 
> from changing array contents, but many `CopyOnWriteArrayList`s are allocated 
> to size zero, or are otherwise maintained empty, so cloning is unnecessary.
> 
> Results from the included JMH benchmark:
> Before:
> 
> Benchmark                                                    Mode  Cnt   
> Score   Error  Units
> CopyOnWriteArrayListBenchmark.clear                          avgt    5  
> 74.487 ± 1.793  ns/op
> CopyOnWriteArrayListBenchmark.clearEmpty                     avgt    5  
> 27.918 ± 0.759  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceArray            avgt    5  
> 16.656 ± 0.375  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceArrayEmpty       avgt    5  
> 15.415 ± 0.489  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceCollection       avgt    5  
> 21.608 ± 0.363  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceCollectionEmpty  avgt    5  
> 15.374 ± 0.260  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceDefault          avgt    5  
> 15.688 ± 0.350  ns/op
> CopyOnWriteArrayListBenchmark.readInstance                   avgt   10  
> 2625.125 ± 71.802  ns/op
> CopyOnWriteArrayListBenchmark.readInstanceEmpty              avgt   10  
> 2607.447 ± 46.400  ns/op
> 
> 
> After:
> 
> Benchmark                                                    Mode  Cnt   
> Score   Error  Units
> CopyOnWriteArrayListBenchmark.clear                          avgt    5  
> 75.365 ± 2.092  ns/op
> CopyOnWriteArrayListBenchmark.clearEmpty                     avgt    5  
> 20.803 ± 0.539  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceArray            avgt    5  
> 16.808 ± 0.582  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceArrayEmpty       avgt    5  
> 12.980 ± 0.418  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceCollection       avgt    5  
> 21.627 ± 0.173  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceCollectionEmpty  avgt    5  
> 12.864 ± 0.408  ns/op
> CopyOnWriteArrayListBenchmark.createInstanceDefault          avgt    5  
> 12.931 ± 0.255  ns/op
> CopyOnWriteArrayListBenchmark.readInstance                   avgt   10  
> 2615.500 ± 30.771  ns/op
> CopyOnWriteArrayListBenchmark.readInstanceEmpty              avgt   10  
> 2583.892 ± 62.086  ns/op

jengebr has updated the pull request incrementally with one additional commit 
since the last revision:

  Expanding coverage of remove()

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/19527/files
  - new: https://git.openjdk.org/jdk/pull/19527/files/b1920f7a..2ff93ab6

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=19527&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=19527&range=02-03

  Stats: 35 lines in 2 files changed: 35 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/19527.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19527/head:pull/19527

PR: https://git.openjdk.org/jdk/pull/19527

Reply via email to