[ 
https://issues.apache.org/jira/browse/HADOOP-7333?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Suresh Srinivas updated HADOOP-7333:
------------------------------------

    Component/s: performance
    
> Performance improvement in PureJavaCrc32
> ----------------------------------------
>
>                 Key: HADOOP-7333
>                 URL: https://issues.apache.org/jira/browse/HADOOP-7333
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: performance, util
>    Affects Versions: 0.21.0
>         Environment: Linux x64
>            Reporter: Eric Caspole
>            Assignee: Eric Caspole
>            Priority: Minor
>             Fix For: 0.23.0
>
>         Attachments: HADOOP-7333.patch, c7333_20110526.patch
>
>
> I would like to propose a small patch to 
>   org.apache.hadoop.util.PureJavaCrc32.update(byte[] b, int off, int len)
> Currently the method stores the intermediate result back into the data member 
> "crc." I noticed this method gets
> inlined into DataChecksum.update() and that method appears as one of the 
> hotter methods in a simple hprof profile collected while running terasort and 
> gridmix.
> If the code is modified to save the temporary result into a local and just 
> once store the final result back into the data member, it results in slightly 
> more efficient hotspot codegen.
> I tested this change using the the 
> "org.apache.hadoop.util.TestPureJavaCrc32$PerformanceTest" which is embedded 
> in the existing unit test for this class, TestPureJavaCrc32 on a variety of 
> linux x64 AMD and Intel multi-socket and multi-core systems I have available 
> to test.
> The patch removes several stores of the intermediate result to memory 
> yielding a 0%-10% speedup in the 
> "org.apache.hadoop.util.TestPureJavaCrc32$PerformanceTest" which is embedded 
> in the existing unit test for this class, TestPureJavaCrc32.
>  
> If you use a debug hotspot JVM with -XX:+PrintOptoAssembly, you can see the 
> intermediate stores such as:
> 414     movq    R9, [rsp + #24] # spill
> 419     movl    [R9 + #12 (8-bit)], RDX # int ! Field PureJavaCrc32.crc
> 41d     xorl    R10, RDX        # int
> The patch results in just one final store of the fully computed value.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to