[ https://issues.apache.org/jira/browse/AVRO-3527?focusedWorklogId=794794&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-794794 ]
ASF GitHub Bot logged work on AVRO-3527: ---------------------------------------- Author: ASF GitHub Bot Created on: 25/Jul/22 09:00 Start Date: 25/Jul/22 09:00 Worklog Time Spent: 10m Work Description: steven-aerts commented on PR #1708: URL: https://github.com/apache/avro/pull/1708#issuecomment-1193776812 @RyanSkraba is there still something I can do to help to get this change submitted? Issue Time Tracking ------------------- Worklog Id: (was: 794794) Time Spent: 1h 50m (was: 1h 40m) > Generated equals() and hashCode() for SpecificRecords > ----------------------------------------------------- > > Key: AVRO-3527 > URL: https://issues.apache.org/jira/browse/AVRO-3527 > Project: Apache Avro > Issue Type: Improvement > Components: java > Reporter: Steven Aerts > Priority: Major > Labels: pull-request-available > Fix For: 1.12.0 > > Attachments: equals_hashcode_after.txt, equals_hashcode_before.txt, > flame_graph.jpeg > > Time Spent: 1h 50m > Remaining Estimate: 0h > > When profiling our production system, we found that it was spending almost > 40% of its overall time in the {{SpecificRecordBase.hashCode()}} and > {{SpecificRecordBase.equals()}} implementations. > In some sections of its logic we see that almost all time is spend in those > function, as can be seen in attached flame graph (blue "pyramids") > !flame_graph.jpeg|width=385,height=99! > By generating the {{.equals()}} and {{.hashCode()}} all this overhead > disappeared and this application became 35% faster overall. > Also on other AVRO heavy applications we saw noticeable performance gains > where we hadn't expect them due to this improvement. > A generated implementation of {{.hashCode()}} becomes 5 to 10 times faster > than its generic counterpart. For {{.equals()}} it is 10 to 20 times faster. > Which is also visible in the attached JMH benchmarks. -- This message was sent by Atlassian Jira (v8.20.10#820010)