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

Jay Zhuang commented on CASSANDRA-9067:
---------------------------------------

Seems the byte re-ordering is because it needs to backward compatible with the 
older on-heap BloomFilter file. Removing that does improve the performance: 
[9067-test|https://github.com/cooldoger/cassandra/tree/9067-test]

Here is the microbench test result before and after the test (The test {{[Add 
bf bench 
test|https://github.com/cooldoger/cassandra/commit/0e82a30e852279176e78f036b07a7000cf6f7e12]}}
 basically serialize and deserialize a BF with {{numElemsInK}} elements):
{noformat}
NoFix:
     [java] Benchmark                                     (numElemsInK)  Mode  
Cnt         Score         Error  Units
     [java] BloomFilterSerializerBench.serializationTest             10  avgt   
 4      1863.613 ±     286.654  us/op
     [java] BloomFilterSerializerBench.serializationTest            100  avgt   
 4     15027.986 ±    1021.473  us/op
     [java] BloomFilterSerializerBench.serializationTest           1024  avgt   
 4    143462.679 ±    4833.878  us/op
     [java] BloomFilterSerializerBench.serializationTest          10240  avgt   
 4   1413625.791 ±   72691.584  us/op
     [java] BloomFilterSerializerBench.serializationTest         102400  avgt   
 4  14219387.793 ± 1243380.279  us/op

WithFix:
     [java] Benchmark                                     (numElemsInK)  Mode  
Cnt        Score       Error  Units
     [java] BloomFilterSerializerBench.serializationTest             10  avgt   
 4      609.689 ±   312.061  us/op
     [java] BloomFilterSerializerBench.serializationTest            100  avgt   
 4     2509.484 ±    65.843  us/op
     [java] BloomFilterSerializerBench.serializationTest           1024  avgt   
 4    21010.078 ±  4246.935  us/op
     [java] BloomFilterSerializerBench.serializationTest          10240  avgt   
 4   203592.239 ± 28953.074  us/op
     [java] BloomFilterSerializerBench.serializationTest         102400  avgt   
 4  2076461.208 ± 96848.833  us/op
{noformat}
For 10K elements, it has about 3 times improvement, for 100M, it's about 7 
times.

But as the BloomFilter file doesn't have version support, how could we migrate 
the existing format to the new one?

> BloomFilter serialization format should not change byte ordering
> ----------------------------------------------------------------
>
>                 Key: CASSANDRA-9067
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9067
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Benedict
>            Assignee: Jay Zhuang
>            Priority: Minor
>             Fix For: 4.x
>
>
> As a follow-up to CASSANDRA-9066 and CASSANDRA-9060, it appears we do some 
> unnecessary byte swapping during the serialization of bloom filters, which 
> makes the logic slower and harder to follow. We should either perform them 
> more efficiently (using Long.reverseBytes) or, preferably, eliminate the 
> conversion altogether since it does not appear to serve any purpose.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to