On Wed, Aug 4, 2010 at 5:01 AM, David Tweed <david.tw...@gmail.com> wrote:
> On Wed, Aug 4, 2010 at 2:53 AM, Jacob Todd <jaketodd...@gmail.com> wrote:
> It's also worth remembering that K & R was written at a time many
> decades ago when performance aspects of computer architecture were a
> lot, lot simpler. Apparently they have
>
> #define HASHSIZE 101
>
> which given that there's no really efficient way of computing % for
> arbitrary numbers is going to be quite slow (particularly if the
> strings are short), which is why hashes for modern machines use table
> sizes that avoid needing a mod. (There are other things that are slow
> on modern architectures that modern hash functions avoid.) I'd use K&R
> for the C syntax and some of the higher level ideas of programming,
> but not try to understand good hashing technology from there.

A minor clarification: looking at the gcc assembly if you've hardcoded
the table size it figures out some magic constants so that it takes
around 8 bit-twiddling and subtraction instructions to do the mod
operation, which is slow but not that slow. If you pass the table size
as a variable, which you would in "serious" code you get integer
division based code, which is going to be "quite slow".

But the point about K & R being basically a syntax and high-level
strategy book these days stands.

-- 
cheers, dave tweed__________________________
computer vision reasearcher: david.tw...@gmail.com
"while having code so boring anyone can maintain it, use Python." --
attempted insult seen on slashdot

Reply via email to