From 0bd238a23eec08f489728766adf1c06b44cec57a Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Wed, 25 Jul 2012 16:05:50 -0400 Subject: [PATCH] More micro-optimization. --- src/backend/utils/hash/chash.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/backend/utils/hash/chash.c b/src/backend/utils/hash/chash.c index 5135218514..dd40413694 100644 --- a/src/backend/utils/hash/chash.c +++ b/src/backend/utils/hash/chash.c @@ -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; -- 2.39.5