# my kingdom for a hash table!

Ben Jackson (bjj@sequent.com)
Tue, 01 Jul 97 11:53:11 PDT

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    Amy Bruckman wrote:
    >
    > > 	object.(propname)
    > > is almost exactly the same as:
    > > 	values[propname in keys]
    >
    > When I was first starting all of this coding, Pavel warned me off of creating
    > any long lists.  He mumbled something about operations increasing exponential
    > to the length of the list, and looked embarassed.

    Defining a new property on an object is almost exactly the same (inside
    the server) as:

    	properties = {@properties, {name, owner, flags}};
    	values = {@values, [clear]};

    Except that the second step happens for *every descendent* of an object.
    As Jay points out, currently the only advantage to the linear lookups
    done on the list of properties is that it uses a simple hash to avoid
    a strcasecmp for things that can't possibly be equal.  On the other
    hand, that's probably offset by the fact that failed property lookups
    go up the parent chain looking for a successful match.

    I don't buy Jay's argument that you should use properties instead of
    lists because we are more likely to optimize property lookup before list
    operations.  Also, if you're going to plan your design around future
    server enhancements, why not plan for having a dictionary type?

    > (I imagine the speedy rogue server fixes this?)

    Most of the pitfalls of using long lists were fixed some time ago, though
    the rogue server does speed up some operations very basic to list
    maintenance and makes some common end cases go faster (mostly associated
    with building lists as arguments to functions or verbs).

    --Ben