IcoreE commented on PR #1524: URL: https://github.com/apache/commons-lang/pull/1524#issuecomment-3651314441
Hello @garydgregory In the PR, I have provided the unit test code: **CharRangeHashCodeTest.java** I’ve conducted a detailed performa hashCode implementations for the CharRange class (package: org.apache.commons.lang3) and wanted to share the results: **1. Test Overview** I benchmarked two hashCode implementations for CharRange (coreorg.apache.commons.lang3.CharRange class): Baseline: hashCodeObjects() (using Objects.hash(end, negated, start) – standard general-purpose implementat Optimized: hashCodeBitwise() (bitwise splicing of startendnegated **2. Key Test Results (100 million iterations/scenario)** ``` ===== CharRange hashCode Efficiency Comparison (Execution count: 100000000 iterations/scenario) ===== Total time for Objects.hash version: 5139 ms, accumulated result: 6360454000000000 Total time for bitwise operation version: 94 ms, accumulated result: 1087927400000000 Efficiency improvement of bitwise version over Objects.hash version: 98.17% ``` The bitwise implementation **achieves a 98.17% reduction** in execution time compared to the Objects.hash **3. Why the Bitwise Version is Superior** 1. Extreme efficiency: Uses only 3 native bitwise operations (left shift, bitwise OR, XOR) – no temporary array allocation, autoboxing, loops, or multiplication (all sources of overhead in Objects.hash) 2. Contract compliance: Strictly adheres to Java’s hashCode/equals rules (equal instances have identical hashes; unequal instances rarely collide). 3. Memory-friendly: No GC overhead (unlike Objects.hash, which creates temporary Object[] arrays). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
