[ 
https://issues.apache.org/jira/browse/AVRO-3527?focusedWorklogId=779844&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-779844
 ]

ASF GitHub Bot logged work on AVRO-3527:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 09/Jun/22 10:03
            Start Date: 09/Jun/22 10:03
    Worklog Time Spent: 10m 
      Work Description: opwvhk commented on PR #1708:
URL: https://github.com/apache/avro/pull/1708#issuecomment-1150927691

   > I used to think that Avro required that the code-generator version _must_ 
be in sync with the avro library version, because that's the way my company 
always did it, but I've learned since that it's not always the case.
   
   This is the case for ANTLR, and is a common practice because some generated 
code is so tightly coupled to the library, that using the same version is a 
requirement to ensure compatibility. This is not the case for Avro.




Issue Time Tracking
-------------------

    Worklog Id:     (was: 779844)
    Time Spent: 1h 40m  (was: 1.5h)

> 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 40m
>  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.7#820007)

Reply via email to