commit-classpath
[Top][All Lists]
Advanced

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

FYI: Micro-optimization for HashMap.rehash()


From: Mark Wielaard
Subject: FYI: Micro-optimization for HashMap.rehash()
Date: Fri, 30 Apr 2004 00:49:04 +0200

Hi,

The following is a little micro-optimization for HashMap.rehash().

2004-04-29  Mark Wielaard  <address@hidden>
 
        Reported by address@hidden [patch #2485]
        * java/util/HashMap.java (rehash): Add entry at start of bucket.

Your hash function has to be pretty for this to be noticeable. But bad
hash functions are not that rare so I guess this will help at least
someone.

Cheers,

Mark
Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.2140
diff -u -r1.2140 ChangeLog
--- ChangeLog   29 Apr 2004 21:21:10 -0000      1.2140
+++ ChangeLog   29 Apr 2004 22:46:45 -0000
@@ -1,5 +1,10 @@
 2004-04-29  Mark Wielaard  <address@hidden>
 
+       Reported by address@hidden [patch #2485]
+       * java/util/HashMap.java (rehash): Add entry at start of bucket.
+
+2004-04-29  Mark Wielaard  <address@hidden>
+
        * java/io/RandomAccessFile.java (setLength): Set position to new
        length when new length is smaller then current position.
 
Index: java/util/HashMap.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/util/HashMap.java,v
retrieving revision 1.27
diff -u -r1.27 HashMap.java
--- java/util/HashMap.java      22 Apr 2004 11:24:39 -0000      1.27
+++ java/util/HashMap.java      29 Apr 2004 22:46:45 -0000
@@ -743,18 +743,9 @@
           {
             int idx = hash(e.key);
             HashEntry dest = buckets[idx];
-
-            if (dest != null)
-              {
-                while (dest.next != null)
-                  dest = dest.next;
-                dest.next = e;
-              }
-            else
-              buckets[idx] = e;
-
             HashEntry next = e.next;
-            e.next = null;
+            e.next = buckets[idx];
+            buckets[idx] = e;
             e = next;
           }
       }

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

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