summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2016-02-01 10:03:03 +0100
committerClifford Wolf <clifford@clifford.at>2016-02-01 10:03:03 +0100
commitea492abcf01ee588a9756f8ae1f632ff418cd30c (patch)
treec514d4fe3ff1d13e43dc6807c157180e245d07ad
parent13e15a24a206f56d9daa15665aba4948fd5dfef5 (diff)
hashlib mfp<> performance improvements
-rw-r--r--kernel/hashlib.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/hashlib.h b/kernel/hashlib.h
index f740fc50..a31c62e5 100644
--- a/kernel/hashlib.h
+++ b/kernel/hashlib.h
@@ -1015,7 +1015,10 @@ public:
const K &find(const K &a) const
{
- return (*this)[ifind((*this)(a))];
+ int i = database.at(a, -1);
+ if (i < 0)
+ return a;
+ return (*this)[ifind(i)];
}
void merge(const K &a, const K &b)
@@ -1025,7 +1028,9 @@ public:
void promote(const K &a)
{
- ipromote((*this)(a));
+ int i = database.at(a, -1);
+ if (i >= 0)
+ ipromote(i);
}
void swap(mfp &other)