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

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

It seems like the fallback in JDK 8 is to a slicing table based implementation, 
but it isn't the slicing by 8 algorithm. It was considered not enough better.

http://mail.openjdk.java.net/pipermail/aarch64-port-dev/2014-May/001113.html
http://people.linaro.org/~edward.nevill/crc32/crc32.patch

I wonder how safe it is to assume that hardware running C* will have it. It was 
introduced in 2010 http://en.wikipedia.org/wiki/CLMUL_instruction_set There is 
also the question of whether it is enabled in a virtualized environment.

I will benchmark the fallback option and see how it compares to PureJavaCRC32.


> 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: Benedict
>              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