FreeBSD Most wanted
Chris Pressey
cpressey at catseye.mine.nu
Sat Mar 6 15:50:14 PST 2004
On Sat, 06 Mar 2004 22:31:14 +0000
Colin Percival <colin.percival at wadham.ox.ac.uk> wrote:
> At 22:17 06/03/2004, Chris Pressey wrote:
> >Colin Percival <colin.percival at 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
More information about the freebsd-chat
mailing list