This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: speeding up localedef


Btw, the functions 'lookup' and 'lookup_2' in simple-hash.c are identical.
I see no reason for keeping two copies of the same code in the same file.


2001-11-28  Bruno Haible  <bruno@clisp.org>

	* locale/programs/simple-hash.c (lookup_2): Remove function.
	(insert_entry_2): Call lookup instead of lookup_2.

--- glibc-20011110/locale/programs/simple-hash.c.bakk	Mon Nov 19 02:36:51 2001
+++ glibc-20011110/locale/programs/simple-hash.c	Wed Nov 28 01:34:30 2001
@@ -72,8 +72,6 @@
 			    unsigned long hval, size_t idx, void *data);
 static size_t lookup (hash_table *htab, const void *key, size_t keylen,
 		      unsigned long int hval);
-static size_t lookup_2 (hash_table *htab, const void *key, size_t keylen,
-			unsigned long int hval);
 static unsigned long compute_hashval (const void *key, size_t keylen);
 static int is_prime (unsigned long int candidate);
 
@@ -179,8 +177,8 @@
 	if (table[idx].used)
 	  insert_entry_2 (htab, table[idx].key, table[idx].keylen,
 			  table[idx].used,
-			  lookup_2 (htab, table[idx].key, table[idx].keylen,
-				    table[idx].used),
+			  lookup (htab, table[idx].key, table[idx].keylen,
+				  table[idx].used),
 			  table[idx].data);
 
       free (table);
@@ -252,55 +250,12 @@
 }
 
 
-static size_t
-lookup (htab, key, keylen, hval)
-     hash_table *htab;
-     const void *key;
-     size_t keylen;
-     unsigned long hval;
-{
-  unsigned long hash;
-  size_t idx;
-  hash_entry *table = (hash_entry *) htab->table;
-
-  /* First hash function: simply take the modul but prevent zero.  */
-  hash = 1 + hval % htab->size;
-
-  idx = hash;
-
-  if (table[idx].used)
-    {
-      if (table[idx].used == hval && table[idx].keylen == keylen
-	  && memcmp (key, table[idx].key, keylen) == 0)
-	return idx;
-
-      /* Second hash function as suggested in [Knuth].  */
-      hash = 1 + hval % (htab->size - 2);
-
-      do
-	{
-	  if (idx <= hash)
-	    idx = htab->size + idx - hash;
-	  else
-	    idx -= hash;
-
-	  /* If entry is found use it.  */
-	  if (table[idx].used == hval && table[idx].keylen == keylen
-	      && memcmp (key, table[idx].key, keylen) == 0)
-	    return idx;
-	}
-      while (table[idx].used);
-    }
-  return idx;
-}
-
-
 /* References:
    [Aho,Sethi,Ullman] Compilers: Principles, Techniques and Tools, 1986
    [Knuth]	      The Art of Computer Programming, part3 (6.4) */
 
 static size_t
-lookup_2 (htab, key, keylen, hval)
+lookup (htab, key, keylen, hval)
      hash_table *htab;
      const void *key;
      size_t keylen;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]