Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: David Carlton <carlton@math.stanford.edu>
To: Daniel Berlin <dberlin@dberlin.org>
Cc: Daniel Jacobowitz <drow@mvista.com>, Jim Blandy <jimb@redhat.com>,
	gdb@sources.redhat.com
Subject: Re: suggestion for dictionary representation
Date: Tue, 24 Sep 2002 09:33:00 -0000	[thread overview]
Message-ID: <ro1hegfqre1.fsf@jackfruit.Stanford.EDU> (raw)
In-Reply-To: <6FDBFE18-CF55-11D6-BA45-000393575BCC@dberlin.org>

On Mon, 23 Sep 2002 20:34:50 -0400, Daniel Berlin <dberlin@dberlin.org> said:

>> I'm also curious about how it would affect the speed of reading in
>> symbols.  Right now, that should be O(n), where n is the number of
>> global symbols, right?

>> If we used expandable hash tables, then I think it would be
>> amortized O(n) and with the constant factor larger.

> Our string hash function is O(N) right now (as are most). Hash
> tables are only O(N) when the hash function is O(1).

[ Here, of course, my 'n' is the number of global symbols, and
Daniel's 'N' is the maximum symbol length. ]

This is true, but I'm not sure that it's relevant to this sort of
theoretical analysis.  After all, skip lists depend on N, as well:
they put symbols in order, and the amount of time to do that depends
on the length of the symbols.

And it's entirely reasonable to think of 'N' as a constant.  Or
perhaps two constants: one for C programs with short names, one for
C++ programs with long names.  (And I'm not really sure that the C++
names will ultimately turn out to be that much longer: once the proper
namespace support has been added, then looking up a C++ name will
probably be a multistep process (looking up pieces of the demangled
name in turn), and for each those steps, we'll be looking at a name
that will be of the appropriate length for a C program.)

But even if we consider N to be a constant, your broader point stands:
the constant factors that different algorithms differ by are
important, and in practice large constants can have more of an affect
than logarithmic terms.  Fortunately, one of the advantages of the
refactoring that I'm doing right now is that it'll be easy to drop in
different dictionary implementations for testing purposes: it should
boil down to writing the code that we'd have to do to get skip list
support anyways, changing one or two function calls, and recompiling.

David Carlton
carlton@math.stanford.edu


  parent reply	other threads:[~2002-09-24 16:33 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-22 19:59 Jim Blandy
2002-09-22 20:11 ` Daniel Jacobowitz
2002-09-23 10:38   ` David Carlton
2002-09-23 17:34     ` Daniel Berlin
2002-09-23 18:39       ` Daniel Jacobowitz
2002-09-23 21:28         ` Daniel Berlin
2002-09-23 21:38           ` Eli Zaretskii
2002-09-23 21:44             ` Daniel Berlin
2002-09-23 21:47               ` Eli Zaretskii
2002-09-23 21:54                 ` Daniel Berlin
2002-09-24  9:33       ` David Carlton [this message]
2002-09-24 10:42         ` Daniel Berlin
2002-09-24 10:53           ` David Carlton
2002-09-24 20:01         ` Jim Blandy
2002-09-24 20:50           ` Daniel Berlin
2002-09-23 18:28     ` Daniel Jacobowitz
2002-09-24  3:51     ` Paul N. Hilfinger
2002-09-24 19:52     ` Jim Blandy
2002-09-24 20:37       ` Elena Zannoni
2002-09-24 20:53       ` Daniel Berlin
2002-09-23 23:50 Jim Blandy
2002-09-24  6:19 ` Daniel Berlin
2002-09-24  7:06   ` Daniel Jacobowitz
2002-09-24 21:01   ` Jim Blandy
2002-09-25  5:54     ` Daniel Jacobowitz
2002-09-27 11:23       ` Jim Blandy
2002-09-27 11:28         ` Daniel Jacobowitz
2002-09-24  9:49 ` David Carlton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ro1hegfqre1.fsf@jackfruit.Stanford.EDU \
    --to=carlton@math.stanford.edu \
    --cc=dberlin@dberlin.org \
    --cc=drow@mvista.com \
    --cc=gdb@sources.redhat.com \
    --cc=jimb@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox