[Omake] SVN Commit: OMake Build System [0.9.8.x] (Rev. 10621)

Jason J. Hickey jyh at cs.caltech.edu
Thu May 3 16:10:46 PDT 2007


Re-naming to match rev 10620.

I've been thinking about the new scheme.  I like the basic idea, but I am
not sure about it.

The entire reason to use cons-hashing is to improve performance of the
compare function.  In the original implementation, if the hash is perfect,
comparisons take time O(1).  We go through great pains to get good hashes. 
I haven't checked recently, but the original implementation showed 2
hash collisions (out of about 1e6 comparisons IIRC) for a MetaPRL compile.

The problem with the new implementation is that the normal operation, the
coarse comparison, now gets a lot of collisions *by definition*.

There is a solution, which is a vertical split, where each fine
node has the hash-consed coarse node as a component.  Comparisons
should be based on the coarse node, but the full hash-consing would
be case-sensitive.

To be more explicit, something like this:

   type coarse_dir =
       DirCoarseRoot of Lm_filename_util.root
     | DirCoarseSub of FileCase.t * DirCoarseHash.t

   type dir =
       DirRoot of Lm_filename_util.root
     | DirSub  of string * DirHash.t * DirCoarseHash.t

----
Changes:
    +107 -52	omake-branches/0.9.8.x/src/ir/omake_node.ml
    Properties	omake-branches/0.9.8.x/src/libmojave/
 
A hyperlinked version of this commit is available at
http://svn.metaprl.org/commitlogs/omake/2007-05.html#07/05/03.16:10:46



More information about the OMake-CVS mailing list