9 Commits

Author SHA1 Message Date
Stephen Atherton
3b641643cb Fixed line endings. 2018-10-18 19:46:58 -07:00
Stephen Atherton
ec1dfe8ae1 Some code cleanup / renaming of things for clarity. Improved StringRef hex string output to omit a middle segment when there is an exceeded length limit. 2018-08-16 16:22:10 -07:00
Stephen Atherton
2e651f02d3 Crash fixes related to initialization and memory ownership in cursor classes. 2018-07-25 02:29:17 -07:00
Stephen Atherton
9d391498e8 Refactored how key/value memory is held in PrefixTree and VersionedBtree, eliminated many unnecessarily copies of large strings. PrefixTree tests pass but btree is still broken, just committing this because it's a large change set. 2018-07-23 03:09:13 -07:00
Stephen Atherton
69b713918b VersionedBTree now uses PrefixTree based pages (with bugs). This required significant changes to both classes because the interface and semantics for building, seeking in, and iterating through pages is very different from the previous trivial approach which was based on serialized vectors. PrefixTree node format rewritten to support optional values without increasing overhead for common node scenarios. PrefixTree::Cursor rewritten to reuse path prefix memory instead of allocating new memory on each movement which is then 'leaked' until destruction. PrefixTree::Cursor movement modified to work better with VersionedBTree::InternalCursor, which was also heavily modified. Added knobs related to key arrangement in PrefixTree nodes. Added StringRef::toHexString() as an alternative to printable() to make reading raw PrefixTree data easier. PrefixTree performance is temporarily worse with this update and VersionedBtree fails its unit test. 2018-06-08 03:32:34 -07:00
Stephen Atherton
06100e73ad Rewrote PrefixTree cursor to be bi-directional. 2018-05-10 13:33:13 -07:00
Stephen Atherton
4aa3f7a27d Added calculation of per key overhead of PrefixTree relative to zero-overhead prefix compression. 2018-05-07 21:52:56 -07:00
Stephen Atherton
72754cd74e Added benchmark/test exploring different write patterns and how they might perform using a page delta based mutation buffer. Added more efficient cursor and PrefixTree::Node access methods for decoding specific members on demand. 2018-05-07 17:44:28 -07:00
Stephen Atherton
ee35a85902 Initial version of PrefixTree for use as Redwood's page format. Added Dave Scherer's CompactMap prototype and added PrefixTree testing to it along side CompactMap tests. 2018-05-01 18:33:14 -07:00