From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: fastest data structure for a hash-like lookup Date: Wed, 04 Jun 2003 13:05:28 -0600 Sender: help-gnu-emacs-bounces+gnu-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: <3EDE42F8.40508@yahoo.com> References: NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Trace: main.gmane.org 1054754003 3740 80.91.224.249 (4 Jun 2003 19:13:23 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Wed, 4 Jun 2003 19:13:23 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+gnu-help-gnu-emacs=m.gmane.org@gnu.org Wed Jun 04 21:13:20 2003 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 19Ndgp-0000w8-00 for ; Wed, 04 Jun 2003 21:12:52 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.20) id 19Nded-0002Zk-3R for gnu-help-gnu-emacs@m.gmane.org; Wed, 04 Jun 2003 15:10:35 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!170.207.51.80!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 29 Original-NNTP-Posting-Host: 170.207.51.80 Original-X-Trace: fu-berlin.de 1054753523 11264193 170.207.51.80 (16 [82742]) User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2 X-Accept-Language: en-us Original-Xref: shelby.stanford.edu gnu.emacs.help:114128 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1b5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Help: List-Post: List-Subscribe: , List-Archive: List-Unsubscribe: , Errors-To: help-gnu-emacs-bounces+gnu-help-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.help:10622 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:10622 Florian von Savigny wrote: > 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? You definitly want to use an obarray. From each key string, generate a symbol in the obarray whose value is the list you want to look up. (defvar my-hash (make-vector some-large-prime-number 0)) (defun my-hash-set (key value) (set (intern key my-hash) value)) (defun my-hash-get (key) (symbol-value (intern-soft key my-hash))) -- Kevin Rodgers