More micro-optimization.
authorRobert Haas <rhaas@postgresql.org>
Wed, 25 Jul 2012 20:05:50 +0000 (16:05 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 27 Jan 2015 02:24:22 +0000 (02:24 +0000)
src/backend/utils/hash/chash.c

index 513521851417a8825a584f408c40ad3ba464273b..dd40413694be6043230539afc8e929fc2325aad0 100644 (file)
@@ -385,12 +385,15 @@ CHashSearch(CHashTable table, void *entry)
        c = table->bucket[bucket].head;
        while (c != InvalidCHashPtr)
        {
+               uint32  h;
+
                /* Compare current node by hashcode, then by memcmp. */
                n = CHashTableGetNode(table, c);
                pg_read_barrier_depends();
-               if (n->un.hashcode == hashcode)
+               h = n->un.hashcode;
+               if (h == hashcode)
                        cmp = memcmp(CHashNodeGetItem(n), entry, table->desc.key_size);
-               else if (n->un.hashcode > hashcode)
+               else if (h > hashcode)
                        cmp = 1;
                else
                        cmp = -1;
@@ -467,13 +470,15 @@ retry:
        while (c != InvalidCHashPtr)
        {
                int             cmp;
+               uint32  h;
 
                /* Compare current node by hashcode, then by memcmp. */
                n = CHashTableGetNode(table, c);
                pg_read_barrier_depends();
-               if (n->un.hashcode == hashcode)
+               h = n->un.hashcode;
+               if (h == hashcode)
                        cmp = memcmp(CHashNodeGetItem(n), entry, table->desc.key_size);
-               else if (n->un.hashcode > hashcode)
+               else if (h > hashcode)
                        cmp = 1;
                else
                        cmp = -1;