help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: fastest data structure for a hash-like lookup


From: lawrence mitchell
Subject: Re: fastest data structure for a hash-like lookup
Date: Wed, 04 Jun 2003 19:57:32 +0100
User-agent: Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50

Florian von Savigny wrote:

> Hi folks,

> I need a data structure that can be accessed via a key (the keys are
> unique), which points to a value that is a list (in the general sense,
> not in the elisp sense) of three elements. [In Perl, I would implement
> this as a hash where the values are references to lists.]. It may also
> be thought of as a structure with keys that point to "a set of three
> values" each. The structure would be quite large and not be
> manipulated by the elisp program, but merely serve as a lookup table.

> I think I've read something that sounded like a vector would be the
> right thing to use (is not changed, is fast), but I haven't found any
> advice on that. Or is it an obarray? A property list? An alist? An
> array? A combination of two? And how would that look like?

Hmm, how about a hash-table :).

/----[ C-h f make-hash-table RET ]
| make-hash-table is a built-in function.
| (make-hash-table &rest KEYWORD-ARGS)
|
| Create and return a new hash table.
|
| Arguments are specified as keyword/argument pairs.  The following
| arguments are defined:
|
| [...]
|
\----

In Emacs 21, hash tables are built in, in Emacs 20, you may need
to do (require 'cl), to get at the CL package's hash tables.

[...]

If you, in fact, do not want to use hash tables, then, for
random access, a vector might be the best idea, however, IIRC,
you can't access an element via a key with a vector.  So, you
might be better-off with an alist/plist, both of these have
linear access time.

-- 
lawrence mitchell <address@hidden>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]