You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jay Zhuang (JIRA)" <ji...@apache.org> on 2018/01/31 21:33:00 UTC

[jira] [Commented] (CASSANDRA-9989) Optimise BTree.Buider

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

Jay Zhuang commented on CASSANDRA-9989:
---------------------------------------

Hi [~aweisberg], I just rebased the code and simplified the benchmark tests (also split the commit into 2 parts benchmark and the fix, so it's easier run the benchmark with and without the fix):
|Branch|uTest|
|[9989|https://github.com/cooldoger/cassandra/tree/9989]|[!https://circleci.com/gh/cooldoger/cassandra/tree/9989.svg?style=svg!|https://circleci.com/gh/cooldoger/cassandra/tree/9989]|

Here is the test result without the fix:
{noformat}
     [java] Benchmark                      (dataSize)      (treeBuilder)   Mode  Cnt      Score       Error   Units
     [java] BTreeBuildBench.treeBuildTest           1       btreeBuilder  thrpt    6  25567.300 ? 11696.493  ops/ms
     [java] BTreeBuildBench.treeBuildTest           1  treeBuilderAddAll  thrpt    6   8180.040 ?  1917.026  ops/ms
     [java] BTreeBuildBench.treeBuildTest           1     treeBuilderAdd  thrpt    6   9666.550 ?  3550.584  ops/ms
     [java] BTreeBuildBench.treeBuildTest          10       btreeBuilder  thrpt    6  18129.297 ?  4100.356  ops/ms
     [java] BTreeBuildBench.treeBuildTest          10  treeBuilderAddAll  thrpt    6   4693.460 ?  1626.681  ops/ms
     [java] BTreeBuildBench.treeBuildTest          10     treeBuilderAdd  thrpt    6   5309.851 ?  1837.909  ops/ms
     [java] BTreeBuildBench.treeBuildTest          33       btreeBuilder  thrpt    6   3008.138 ?  1216.708  ops/ms
     [java] BTreeBuildBench.treeBuildTest          33  treeBuilderAddAll  thrpt    6   1393.265 ?   328.780  ops/ms
     [java] BTreeBuildBench.treeBuildTest          33     treeBuilderAdd  thrpt    6   1722.419 ?   218.660  ops/ms
     [java] BTreeBuildBench.treeBuildTest        1000       btreeBuilder  thrpt    6    117.055 ?    67.364  ops/ms
     [java] BTreeBuildBench.treeBuildTest        1000  treeBuilderAddAll  thrpt    6     57.689 ?    11.197  ops/ms
     [java] BTreeBuildBench.treeBuildTest        1000     treeBuilderAdd  thrpt    6     53.959 ?     7.916  ops/ms
     [java] BTreeBuildBench.treeBuildTest        5000       btreeBuilder  thrpt    6     21.463 ?     1.595  ops/ms
     [java] BTreeBuildBench.treeBuildTest        5000  treeBuilderAddAll  thrpt    6     10.972 ?     2.476  ops/ms
     [java] BTreeBuildBench.treeBuildTest        5000     treeBuilderAdd  thrpt    6      9.951 ?     2.194  ops/ms
     [java] BTreeBuildBench.treeBuildTest     1000000       btreeBuilder  thrpt    6      0.118 ?     0.054  ops/ms
     [java] BTreeBuildBench.treeBuildTest     1000000  treeBuilderAddAll  thrpt    6      0.048 ?     0.016  ops/ms
     [java] BTreeBuildBench.treeBuildTest     1000000     treeBuilderAdd  thrpt    6      0.045 ?     0.011  ops/ms
{noformat}
With fix:
{noformat}
     [java] Benchmark                      (dataSize)      (treeBuilder)   Mode  Cnt      Score      Error   Units
     [java] Benchmark                      (dataSize)      (treeBuilder)   Mode  Cnt      Score      Error   Units
     [java] BTreeBuildBench.treeBuildTest           1       btreeBuilder  thrpt    6  24546.947 ? 4740.490  ops/ms
     [java] BTreeBuildBench.treeBuildTest           1  treeBuilderAddAll  thrpt    6   8129.421 ? 2000.655  ops/ms
     [java] BTreeBuildBench.treeBuildTest           1     treeBuilderAdd  thrpt    6   9277.822 ? 3106.155  ops/ms
     [java] BTreeBuildBench.treeBuildTest          10       btreeBuilder  thrpt    6  18385.382 ? 5597.276  ops/ms
     [java] BTreeBuildBench.treeBuildTest          10  treeBuilderAddAll  thrpt    6   4213.489 ? 1055.968  ops/ms
     [java] BTreeBuildBench.treeBuildTest          10     treeBuilderAdd  thrpt    6   5507.714 ? 2305.731  ops/ms
     [java] BTreeBuildBench.treeBuildTest          33       btreeBuilder  thrpt    6   4396.962 ? 1882.824  ops/ms
     [java] BTreeBuildBench.treeBuildTest          33  treeBuilderAddAll  thrpt    6   1630.346 ?  228.321  ops/ms
     [java] BTreeBuildBench.treeBuildTest          33     treeBuilderAdd  thrpt    6   2182.774 ?  545.746  ops/ms
     [java] BTreeBuildBench.treeBuildTest        1000       btreeBuilder  thrpt    6    304.032 ?  144.663  ops/ms
     [java] BTreeBuildBench.treeBuildTest        1000  treeBuilderAddAll  thrpt    6    108.038 ?   32.746  ops/ms
     [java] BTreeBuildBench.treeBuildTest        1000     treeBuilderAdd  thrpt    6     86.093 ?   18.264  ops/ms
     [java] BTreeBuildBench.treeBuildTest        5000       btreeBuilder  thrpt    6     51.912 ?   31.749  ops/ms
     [java] BTreeBuildBench.treeBuildTest        5000  treeBuilderAddAll  thrpt    6     15.545 ?    4.912  ops/ms
     [java] BTreeBuildBench.treeBuildTest        5000     treeBuilderAdd  thrpt    6     14.569 ?    3.418  ops/ms
     [java] BTreeBuildBench.treeBuildTest     1000000       btreeBuilder  thrpt    6      0.226 ?    0.119  ops/ms
     [java] BTreeBuildBench.treeBuildTest     1000000  treeBuilderAddAll  thrpt    6      0.064 ?    0.012  ops/ms
     [java] BTreeBuildBench.treeBuildTest     1000000     treeBuilderAdd  thrpt    6      0.074 ?    0.020  ops/ms
{noformat}
So the patch improves the performance to build btree that cannot fit into one leaf node (larger than 32 elements).

> Optimise BTree.Buider
> ---------------------
>
>                 Key: CASSANDRA-9989
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9989
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: Benedict
>            Assignee: Jay Zhuang
>            Priority: Minor
>             Fix For: 4.x
>
>         Attachments: 9989-trunk.txt
>
>
> BTree.Builder could reduce its copying, and exploit toArray more efficiently, with some work. It's not very important right now because we don't make as much use of its bulk-add methods as we otherwise might, however over time this work will become more useful.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org