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>