Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-16278

Use ConcurrentHashMap instead of ConcurrentSkipListMap if possible

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      SSD and 10G network make our system CPU bound again, so the speed of memory operation only code becomes more and more important.

      In HBase, if want to use byte[] as a map key, then we will always use CSLM even if we do not need the map to be ordered. I know that this could save one object allocation since we can not use byte[] directly as CHM's key. But we all know that CHM is faster than CSLM, so I wonder if it worth to use CSLM instead of CHM only because one extra object allocation.

      Then I wrote a simple jmh micro benchmark to test the performance of CHM and CSLM. The code could be found here

      https://github.com/Apache9/microbench

      It turns out that CHM is still much faster than CSLM with one extra object allocation.

      So I think we should always use CHM if we do not need the keys to be sorted.

        Attachments

        1. ConcurrentHashByteArrayMap.java
          10 kB
          Hiroshi Ikeda

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              zhangduo Duo Zhang
            • Votes:
              0 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

              • Created:
                Updated: