Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Mar 2004 15:55:13 -0800
From:      Chris Pressey <cpressey@catseye.mine.nu>
To:        Colin Percival <colin.percival@wadham.ox.ac.uk>
Cc:        freebsd-chat@freebsd.org
Subject:   Re: FreeBSD Most wanted
Message-ID:  <20040306155513.6a75e264.cpressey@catseye.mine.nu>
In-Reply-To: <6.0.1.1.1.20040306221435.03a97e20@imap.sfu.ca>
References:  <Pine.LNX.4.43.0403011839470.3269-100000@pilchuck.reedmedia.net> <EABDE846-6EF2-11D8-AE09-000A95DA58FE@jimz.net> <20040306005744.T38020@haldjas.folklore.ee> <20040305153505.74061868.cpressey@catseye.mine.nu> <20040306013914.D38020@haldjas.folklore.ee> <404A465A.1040009@stephanmantler.com> <6.0.1.1.1.20040306214526.08c5ed70@imap.sfu.ca> <20040306141742.4f41ba27.cpressey@catseye.mine.nu> <6.0.1.1.1.20040306221435.03a97e20@imap.sfu.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 06 Mar 2004 22:31:14 +0000
Colin Percival <colin.percival@wadham.ox.ac.uk> wrote:

> At 22:17 06/03/2004, Chris Pressey wrote:
> >Colin Percival <colin.percival@wadham.ox.ac.uk> wrote:
> > > Nobody
> > > quite understands why hash tables are not a perfect data structure
> > > until they've tried to implement one in assembly language.  (And,
> > > after performing such a task, few people will use hash tables
> > > without asking themselves, at least for a moment, if there might
> > > be a cheaper solution to the problem at hand.)
> >
> >Not sure what you mean here... surely it's no easier to implement
> >(say) an AVL tree or a red-black tree in assembly?
> 
>    Perhaps not, but it's much easier to implement an unsorted list.
>    :-)
> 
>    I've often seen people using hash tables to keep track of very
> small numbers of objects, where a simple sequential scan will be much
> faster than a hash table lookup; I also see people using hash tables
> for data where the keys rarely, if ever, change.

Ah, yes, that's a good point.  Modern high-level languages do tend to
just give you these things on the strictly black-box ADT level, like
dictionaries... and with all the guts abstracted away, programmers do
tend to let themselves get a bit carried away.  It Does What I Want,
it Must Be What I Need.

And, yeah.  A hash table is really nothing by itself.  It's just a way
of taking a long list (or other structure) and splitting it up into N
smaller structures.  If your lists are never that long in the first
place, there's no point.

> >In fact, I'd think a hash function would often be a good candidate
> >for hand-coded assembly - if you want to play "Beat the Compiler" :)
> 
>    Quite likely, yes[0].  But the act of writing usually makes people
> realize just how much work the processor does every time a
> hashlookup() call is made.  The amount of work the programmer does
> isn't really important.  (You're not planning on assembly-coding a
> hash table more than once, are you?)

If I am, rest assured it's only for my own entertainment.

>    Of course, part of the problem is that most undergraduate courses
> still teach the myth that random access memory is, err, random access.

:-)

-Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040306155513.6a75e264.cpressey>