You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Duo Zhang (JIRA)" <ji...@apache.org> on 2016/07/23 07:28:20 UTC

[jira] [Comment Edited] (HBASE-16278) Use ConcurrentHashMap instead of ConcurrentSkipListMap if possible

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

Duo Zhang edited comment on HBASE-16278 at 7/23/16 7:27 AM:
------------------------------------------------------------

This the test result on a machine with 2 * E5-2630 v2, 128G RAM, jdk8u72. The machine is not used by me exclusively so the result may have some noise, but it does not change the qualitative result since CHM is much faster.

{noformat}
./bin/run.sh -f 1 -t 10 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  1328.692 ± 26.052  ops/s
CSLMTest.test  thrpt   10   371.875 ±  3.299  ops/s

./bin/run.sh -f 1 -t 20 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2093.498 ± 42.794  ops/s
CSLMTest.test  thrpt   10   560.551 ± 23.960  ops/s

./bin/run.sh -f 1 -t 40 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2072.665 ± 52.749  ops/s
CSLMTest.test  thrpt   10   621.861 ± 14.405  ops/s

./bin/run.sh -f 1 -t 100 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2105.644 ± 27.742  ops/s
CSLMTest.test  thrpt   10   624.786 ± 12.830  ops/s

./bin/run.sh -f 1 -t 200 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2160.738 ± 53.120  ops/s
CSLMTest.test  thrpt   10   639.131 ± 10.326  ops/s
{noformat}


was (Author: apache9):
This the test result on a machine with 2 * E5-2630 v2, 128G RAM. The machine is not used by me exclusively so the result may have some noise, but it does not change the qualitative result since CHM is much faster.

{noformat}
./bin/run.sh -f 1 -t 10 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  1328.692 ± 26.052  ops/s
CSLMTest.test  thrpt   10   371.875 ±  3.299  ops/s

./bin/run.sh -f 1 -t 20 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2093.498 ± 42.794  ops/s
CSLMTest.test  thrpt   10   560.551 ± 23.960  ops/s

./bin/run.sh -f 1 -t 40 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2072.665 ± 52.749  ops/s
CSLMTest.test  thrpt   10   621.861 ± 14.405  ops/s

./bin/run.sh -f 1 -t 100 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2105.644 ± 27.742  ops/s
CSLMTest.test  thrpt   10   624.786 ± 12.830  ops/s

./bin/run.sh -f 1 -t 200 -i 10
Benchmark       Mode  Cnt     Score    Error  Units
CHMTest.test   thrpt   10  2160.738 ± 53.120  ops/s
CSLMTest.test  thrpt   10   639.131 ± 10.326  ops/s
{noformat}

> Use ConcurrentHashMap instead of ConcurrentSkipListMap if possible
> ------------------------------------------------------------------
>
>                 Key: HBASE-16278
>                 URL: https://issues.apache.org/jira/browse/HBASE-16278
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Duo Zhang
>
> 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.



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