RFR: 8332249: Micro-optimize Method.hashCode [v2]

Sean Gwizdak duke at openjdk.org
Mon Jun 3 18:00:35 UTC 2024


> Improve the speed of Method.hashCode by caching the hashcode on first use. I've seen an application where Method.hashCode is a hot path, and this is a fairly simple speedup. The memory overhead is low. 
> 
> This addresses issue [JDK-8332249](https://bugs.openjdk.org/browse/JDK-8332249). 
> 
> Before:
> 
> Benchmark                         Mode  Cnt  Score   Error  Units
> # Intel Skylake
> MethodHashCode.benchmarkHashCode  avgt    5  1.843 ± 0.149  ns/op
> # Arm Neoverse N1
> MethodHashCode.benchmarkHashCode  avgt    5  2.363 ± 0.091  ns/op
> 
> 
> 
> After:
> 
> 
> Benchmark                         Mode  Cnt  Score   Error  Units
> # Intel Skylake
> MethodHashCode.benchmarkHashCode  avgt    5  1.121 ± 1.189  ns/op
> # Arm Neoverse N1
> MethodHashCode.benchmarkHashCode  avgt    5  1.001 ± 0.001  ns/op

Sean Gwizdak has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:

 - Remove trailing whitespace.
 - Move hashCode benchmark into the newly created MethodBenchmark file
 - Merge branch 'master' into method-hashcode-JDK-8332249
 - Remove changes to JavaDoc per guidance.
 - Fix whitespace issues pointed by the bot
 - Micro-optimize Method.hashCode

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/19433/files
  - new: https://git.openjdk.org/jdk/pull/19433/files/2e4c0c94..4364d99d

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=19433&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=19433&range=00-01

  Stats: 30025 lines in 868 files changed: 18155 ins; 7339 del; 4531 mod
  Patch: https://git.openjdk.org/jdk/pull/19433.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19433/head:pull/19433

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


More information about the core-libs-dev mailing list