ramkrishna.s.vasudevan created HBASE-22671:
----------------------------------------------

             Summary: ByteBufferUtils#findCommonPrefix() can be safely changed 
to ArraysSupport#mismatch()
                 Key: HBASE-22671
                 URL: https://issues.apache.org/jira/browse/HBASE-22671
             Project: HBase
          Issue Type: Sub-task
    Affects Versions: 3.0.0
            Reporter: ramkrishna.s.vasudevan
            Assignee: ramkrishna.s.vasudevan


Microbenchmarks reveal that finding the common prefix for encoders can safely 
be replaced with ArraysSupport#mismatch().
the microbenchmark just compares Cells that are backed with array and BB. 
For a 27 bit common row prefix the existing BBUtils#findCommonPrefix
{code}
Benchmark                        Mode  Cnt    Score    Error  Units
PrefixComparator.arrayBBCompare  avgt   10  869.897 ±  9.429  ns/op
PrefixComparator.arrayCompare    avgt   10  302.074 ± 13.448  ns/op
PrefixComparator.bbArrayCompare  avgt   10  869.369 ±  5.368  ns/op
PrefixComparator.bbCompare       avgt   10  409.479 ±  1.587  ns/op
{code}

the same with ArraysSupport#mismatch() change gives this
{code}
Benchmark                        Mode  Cnt    Score   Error  Units
PrefixComparator.arrayBBCompare  avgt   10  311.946 ± 1.902  ns/op
PrefixComparator.arrayCompare    avgt   10  157.010 ± 4.482  ns/op
PrefixComparator.bbArrayCompare  avgt   10  311.568 ± 1.348  ns/op
PrefixComparator.bbCompare       avgt   10   92.540 ± 0.501  ns/op
{code}

How ever note that this comes in flushes/compaction and not during the read 
path. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to