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