RFR: 8156071: List.of: reduce array copying during creation

Stuart Marks smarks at openjdk.java.net
Thu Oct 1 00:21:16 UTC 2020


Plumb new internal static factory method to trust the array passed in, avoiding unnecessary copying. JMH results for
the benchmark show about 15% improvement for the cases that were optimized, namely the 3 to 10 fixed arg cases.

# VM options: -verbose:gc -XX:+UseParallelGC -Xms4g -Xmx4g --enable-preview -verbose:gc -XX:+UsePara
llelGC -Xms4g -Xmx4g -Xint
# Warmup: 5 iterations, 1 s each
# Measurement: 5 iterations, 2 s each

WITHOUT varargs optimization:

Benchmark         Mode  Cnt     Score     Error   Units
ListArgs.list00  thrpt   15  6019.539 ± 144.040  ops/ms
ListArgs.list01  thrpt   15  1985.009 ±  40.606  ops/ms
ListArgs.list02  thrpt   15  1854.812 ±  17.488  ops/ms
ListArgs.list03  thrpt   15   963.866 ±  10.262  ops/ms
ListArgs.list04  thrpt   15   908.116 ±   6.278  ops/ms
ListArgs.list05  thrpt   15   848.607 ±  16.701  ops/ms
ListArgs.list06  thrpt   15   822.282 ±   8.905  ops/ms
ListArgs.list07  thrpt   15   780.057 ±  11.214  ops/ms
ListArgs.list08  thrpt   15   745.295 ±  19.204  ops/ms
ListArgs.list09  thrpt   15   704.596 ±  14.003  ops/ms
ListArgs.list10  thrpt   15   696.436 ±   4.914  ops/ms
ListArgs.list11  thrpt   15   661.908 ±  11.041  ops/ms

WITH varargs optimization:

Benchmark         Mode  Cnt     Score    Error   Units
ListArgs.list00  thrpt   15  6172.298 ± 62.736  ops/ms
ListArgs.list01  thrpt   15  1987.724 ± 45.468  ops/ms
ListArgs.list02  thrpt   15  1843.419 ± 10.693  ops/ms
ListArgs.list03  thrpt   15  1126.946 ± 30.952  ops/ms
ListArgs.list04  thrpt   15  1050.440 ± 17.859  ops/ms
ListArgs.list05  thrpt   15   999.275 ± 23.656  ops/ms
ListArgs.list06  thrpt   15   948.844 ± 19.615  ops/ms
ListArgs.list07  thrpt   15   897.541 ± 15.531  ops/ms
ListArgs.list08  thrpt   15   853.359 ± 18.755  ops/ms
ListArgs.list09  thrpt   15   826.394 ±  8.284  ops/ms
ListArgs.list10  thrpt   15   779.231 ±  4.104  ops/ms
ListArgs.list11  thrpt   15   650.888 ±  3.948  ops/ms

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

Commit messages:
 - 8156071: reduce varargs array creation and unnecessary copying during creation

Changes: https://git.openjdk.java.net/jdk/pull/449/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=449&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8156071
  Stats: 203 lines in 6 files changed: 185 ins; 0 del; 18 mod
  Patch: https://git.openjdk.java.net/jdk/pull/449.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/449/head:pull/449

PR: https://git.openjdk.java.net/jdk/pull/449



More information about the security-dev mailing list