Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Replaces BTree with BTreeMap and BTreeSet, which are completely new implementations. BTreeMap's internal Node representation is particularly inefficient at the moment to make this first implementation easy to reason about and fairly safe. Both collections are also currently missing some of the tooling specific to sorted collections, which is planned as future work pending reform of these APIs. General implementation issues are discussed with TODOs internally Perf results on x86_64 Linux: test treemap::bench::find_rand_100 ... bench: 76 ns/iter (+/- 4) test treemap::bench::find_rand_10_000 ... bench: 163 ns/iter (+/- 6) test treemap::bench::find_seq_100 ... bench: 77 ns/iter (+/- 3) test treemap::bench::find_seq_10_000 ... bench: 115 ns/iter (+/- 1) test treemap::bench::insert_rand_100 ... bench: 111 ns/iter (+/- 1) test treemap::bench::insert_rand_10_000 ... bench: 996 ns/iter (+/- 18) test treemap::bench::insert_seq_100 ... bench: 486 ns/iter (+/- 20) test treemap::bench::insert_seq_10_000 ... bench: 800 ns/iter (+/- 15) test btree::map::bench::find_rand_100 ... bench: 74 ns/iter (+/- 4) test btree::map::bench::find_rand_10_000 ... bench: 153 ns/iter (+/- 5) test btree::map::bench::find_seq_100 ... bench: 82 ns/iter (+/- 1) test btree::map::bench::find_seq_10_000 ... bench: 108 ns/iter (+/- 0) test btree::map::bench::insert_rand_100 ... bench: 220 ns/iter (+/- 1) test btree::map::bench::insert_rand_10_000 ... bench: 620 ns/iter (+/- 16) test btree::map::bench::insert_seq_100 ... bench: 411 ns/iter (+/- 12) test btree::map::bench::insert_seq_10_000 ... bench: 534 ns/iter (+/- 14) BTreeMap still has a lot of room for optimization, but it's already beating out TreeMap on most access patterns. [breaking-change]
- Loading branch information
b6edc59
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
saw approval from huonw
at Gankra@b6edc59
b6edc59
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
merging Gankro/rust/btree-vec = b6edc59 into auto
b6edc59
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gankro/rust/btree-vec = b6edc59 merged ok, testing candidate = ef112fe
b6edc59
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
all tests pass:
success: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/1562
success: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/1559
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/1553
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/1559
success: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/1556
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/1555
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/1555
success: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/1559
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/1553
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/1552
success: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android-t/builds/1555
success: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/1210
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-t/builds/1208
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-c/builds/1210
success: http://buildbot.rust-lang.org/builders/auto-win-64-opt/builds/44
success: http://buildbot.rust-lang.org/builders/auto-win-64-nopt-t/builds/43
success: http://buildbot.rust-lang.org/builders/auto-win-64-nopt-c/builds/43
b6edc59
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fast-forwarding master to auto = ef112fe