Michael Rynn wrote:
I do not think this is true of current builtin AA,

Correct, it is not.

and therefore not true of this enhanced implementation. I note the current builtin _aaGet will locate a new node by pointer, maybe do a rehash, and then return the node it previously relocated. Relax, this AA has no fear of nodes moving around on rehash. They are just relinked. All done with pointers.

I was looking at:

http://www.dsource.org/projects/aa/browser/trunk/randAA/RandAA.d

which contains the data structures:

  K* _keys;
  V* vals;
  ubyte* flags;

i.e. 3 parallel arrays. I apologize since you are apparently not referring to that, but this:


http://www.dsource.org/projects/aa/browser/trunk/druntime/aaA.d

but that uses the data structure:

      aaNode *left_;
      aaNode *right_;
      static if (keyBig)
           hash_t hash_;

so I don't see where the linear congruent random probe thingy is <g>. You *could* get rid of the left and right pointers and use linear congruent probing, and that might be worth a try.

Reply via email to