[erlang-questions] dict, orddict and gb_tree
Robert Virding
robert.virding@REDACTED
Wed Feb 14 23:46:45 CET 2007
I will try some more scan patterns to see what types of figures I get. I
don't really envision calculating random permutations of 500k element
lists. :-)
Richard Carlsson wrote:
> Robert Virding wrote:
>
>> 3. gb_trees is very slow on adding new values, but rather fast on
>> fetching and updating them. I don't know why this is so.
>
>
> There were several posts to this list years ago with similar
> measurements, and I've never seen such strange numbers for add/enter
> before. In particular, the difference between enter and add (when the
> key does in fact not exist in the tree) should be precisely the time
> it takes to do a lookup. Your numbers show a much greater difference
> between enter and add, so something seems to be fishy here.
>
>> 4. It is a big win for gb_trees if you know whether you have an
>> existing key or not when modifying the table.
>
>
> Yes, that is because if the key is known to be present, there will
> be no need to do any rebalancing (or even check for rebalancing), so
> the update can be made much faster. Hence, for algorithms that do a
> lot of updates, it can definitely be better to fully populate the tree
> in advance, so that update can be used throughout instead of enter.
> (However, the functional-array implementation that Dan G. and I posted
> to the list a while back is much faster still, if you have a range of
> integer keys.)
>
>> 5. I was a bit surprised that red-black trees could match gb_trees in
>> fetching as red-black allows some inbalance in the tree. Perhaps the
>> order of insertion was right for it?
>
>
> Try a random set of keys and let us know.
>
> /Richard
>
>
More information about the erlang-questions
mailing list