[ 
https://issues.apache.org/jira/browse/CASSANDRA-8614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14311593#comment-14311593
 ] 

Ariel Weisberg commented on CASSANDRA-8614:
-------------------------------------------

There is some wonkiness with the .class file for the dummy CRC32 being 
necessary. You can compile the .java under src/jdkoverride with jdk7 to compile 
and test and then check it in. git diff doesn't include the binary .class file.
 
In terms of picking the best CRC32 implementation the ticket and patch are 
ready for review. We might as well get the benefit of a a better CRC32 
implementation where available in the situations where we are already choosing 
to use a CRC32.

CASSANDRA-8684 covers widening the usage of CRC32 (or not) and can be addressed 
separately. The performance graphs from 8684 help advocate for selecting the 
intrinsic implementation when available.

> Select optimal CRC32 implementation at runtime
> ----------------------------------------------
>
>                 Key: CASSANDRA-8614
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8614
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Ariel Weisberg
>            Assignee: Ariel Weisberg
>              Labels: performance
>         Attachments: 8614.patch, Sample.java
>
>
> JDK 8 has support for an intrinsic for CRC32 that runs at 12-13 gigabytes/sec 
> per core in my quick and dirty test. PureJavaCRC32 is < 800 megabytes/sec if 
> I recall and it has a lookup table that evicts random cache lines every time 
> it runs.
> In order to capture the benefit of that when it is available we can select a 
> CRC32 implementation at startup in a static block.
> If JDK 8 is not what is running we can fall back to the existing 
> PureJavaCRC32 implementation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to