6 ms·
> large sorted sets Surprised to see no mention of trees which are basically the standard datastructure for this.
by gubbrora 7y ago
> large sorted sets
Surprised to see no mention of trees which are basically the standard datastructure for this.
- adrianN 7y agoThey can also be implemented fairly efficiently in functional languages.
- jhgg 7y agoOne thing that our blog-post didn't mention too well was the need to be able to access arbitrary slices of data within the sorted set, as well as being able to know the index at which an item was inserted as well as removed. This is necessary for our usage of sorted sets, as clients can subscribe to a given window of the sorted-set (e.g. the top of a member-list), and in order to compute the delta operations to keep the client-side list in sync with the one on the server, we need this information.
- adrianN 7y agoI think you can augment simple trees to support those operations.
- kilotaras 7y agoThis reads as an almost textbook description of Cartesian tree.
- jhgg 7y agoCartesian trees do not provide the ability to get items at arbitrary indices within the data structure in an efficient member from my understanding. In order to get the Nth item in the tree, a linear traversal is required. Furthermore, to get the index at which an item is inserted or removed requires the same traversal to accumulate the index.
- kilotaras 7y agoThe common solution is to hold size of subtree in the nodes in addition to the value a.k.a treap with implicit keys.
- foobarqwertz 7y agoI propose a challenge: Provide the interface for the datastructure and the test tool.
- pornel 7y agoBut at this point you're adding even more bookkeeping and implementation complexity just to use a data structure that's not ideal in the first place (for performance, sequential memory layout is better than chasing pointers).
- adamnemecek 7y agoMemory fragmentation.