> Improve `java/lang/reflect/Method.java` by eliminating needless cloning of > Class[0] instances. This cloning is intended to prevent callers from > changing array contents, but many Methods have zero exceptions or zero > parameters, and returning the original `Class[0]` is sufficient. > > Results from the included JMH benchmark: > Before: > > Benchmark Mode Cnt Score Error Units > ConstructorBenchmark.getExceptionTypes avgt 5 6.526 ± 0.183 ns/op > ConstructorBenchmark.getExceptionTypesEmpty avgt 5 5.803 ± 0.073 ns/op > ConstructorBenchmark.getParameterTypes avgt 5 6.521 ± 0.188 ns/op > ConstructorBenchmark.getParameterTypesEmpty avgt 5 5.747 ± 0.087 ns/op > MethodBenchmark.getExceptionTypes avgt 5 6.525 ± 0.163 ns/op > MethodBenchmark.getExceptionTypesEmpty avgt 5 5.783 ± 0.130 ns/op > MethodBenchmark.getParameterTypes avgt 5 6.518 ± 0.195 ns/op > MethodBenchmark.getParameterTypesEmpty avgt 5 5.742 ± 0.028 ns/op > > > After: > > Benchmark Mode Cnt Score Error Units > ConstructorBenchmark.getExceptionTypes avgt 5 6.590 ± 0.124 ns/op > ConstructorBenchmark.getExceptionTypesEmpty avgt 5 1.351 ± 0.061 ns/op > ConstructorBenchmark.getParameterTypes avgt 5 6.651 ± 0.132 ns/op > ConstructorBenchmark.getParameterTypesEmpty avgt 5 1.353 ± 0.150 ns/op > MethodBenchmark.getExceptionTypes avgt 5 6.701 ± 0.151 ns/op > MethodBenchmark.getExceptionTypesEmpty avgt 5 1.422 ± 0.025 ns/op > MethodBenchmark.getParameterTypes avgt 5 6.629 ± 0.142 ns/op > MethodBenchmark.getParameterTypesEmpty avgt 5 1.273 ± 0.169 ns/op
jengebr has updated the pull request incrementally with one additional commit since the last revision: rewriting JMH per comments ------------- Changes: - all: https://git.openjdk.org/jdk/pull/19327/files - new: https://git.openjdk.org/jdk/pull/19327/files/31b64951..e043fd57 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=19327&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=19327&range=02-03 Stats: 87 lines in 2 files changed: 72 ins; 1 del; 14 mod Patch: https://git.openjdk.org/jdk/pull/19327.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/19327/head:pull/19327 PR: https://git.openjdk.org/jdk/pull/19327