From: Peter Brooks <peter.h.m.brooks@gmail.com>
Subject: Re: B-tree performance
Date: Sun, 1 Sep 2013 01:38:54 -0700 (PDT)
Date: 2013-09-01T01:38:54-07:00 [thread overview]
Message-ID: <a5924091-ecc9-4d11-8bb5-30d84204cb15@googlegroups.com> (raw)
In-Reply-To: <b8gaq8FfqgkU1@mid.individual.net>
On Sunday, 1 September 2013 10:05:27 UTC+2, Niklas Holsti wrote:
>
>
> If for some reason you want to the keep the hash-table small, although
> this leads to many collisions, I suppose you could organize the
> colliding object sets into some kind of keyed containers, for example
> B-trees, but then you should use the actual key to index these
> containers, not the hash-value.
>
I'm using a tree structure to represent a sparse array because it makes inserts and deletes easier and quicker, and cleaner. I'm using the large hash index to minimise the number of collisions.
If there was a better sparse array algorithm that'd probably suit me better. Then I'd simply hash everything to a 32 bit (or even larger) array index and be done with it.
With dynamic allocation, memory is used more efficiently. If you use a sparse array, it can grow in size slowly (needing periodic cleaning) because deletions don't delete the location, but simply put the contents to null, and such null entries accumulate.
>
>
> I assume your data structures will be in main memory. If some parts are
> in secondary memory (disk files) there are more trade-offs to consider.
>
I'm hoping to use persistent objects to reduce the extra complications there - using OS paging makes more sense, from a performance point of view, than using files.
If the persistent objects are shadowed in RAM disc and that's shared over a network, it can make the solution nicely scalable across multiple networked machines.
>
> Either make up an analytical model (which will of course depend on lots
> of parameters of the problem and processor) or experiment and measure. I
> would do the latter. But it will probably also depend on the pattern of
> accesses. For example, if the accesses have temporal locality, using
> some kind of "move to front" heuristic on the lists of colliding objects
> can help.
>
Yes, some sort of caching might help, particularly for predicates.
next prev parent reply other threads:[~2013-09-01 8:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-31 7:14 B-tree performance Peter Brooks
2013-08-31 15:26 ` Shark8
2013-08-31 15:47 ` Peter Brooks
2013-09-01 4:57 ` Niklas Holsti
2013-09-01 6:05 ` Peter Brooks
2013-09-01 8:05 ` Niklas Holsti
2013-09-01 8:38 ` Peter Brooks [this message]
2013-09-02 4:28 ` Niklas Holsti
2013-09-03 2:15 ` Peter Brooks
2013-09-05 8:25 ` Memory mapping and network file systems (Was: B-tree performance) Jacob Sparre Andersen
2013-09-05 10:12 ` Peter Brooks
2013-09-03 16:14 ` B-tree performance Dan'l Miller
2013-09-03 17:43 ` Peter Brooks
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox