Commit ed9e4966 authored by antirez's avatar antirez
Browse files

Faster version of the function hashing possibly encoded objects, leading to a...

Faster version of the function hashing possibly encoded objects, leading to a general speed gain when working with Sets of integers
parent 3c68de9b
...@@ -954,10 +954,24 @@ static int dictEncObjKeyCompare(void *privdata, const void *key1, ...@@ -954,10 +954,24 @@ static int dictEncObjKeyCompare(void *privdata, const void *key1,
static unsigned int dictEncObjHash(const void *key) { static unsigned int dictEncObjHash(const void *key) {
robj *o = (robj*) key; robj *o = (robj*) key;
o = getDecodedObject(o); if (o->encoding == REDIS_ENCODING_RAW) {
unsigned int hash = dictGenHashFunction(o->ptr, sdslen((sds)o->ptr)); return dictGenHashFunction(o->ptr, sdslen((sds)o->ptr));
decrRefCount(o); } else {
return hash; if (o->encoding == REDIS_ENCODING_INT) {
char buf[32];
int len;
len = snprintf(buf,32,"%ld",(long)o->ptr);
return dictGenHashFunction((unsigned char*)buf, len);
} else {
unsigned int hash;
o = getDecodedObject(o);
hash = dictGenHashFunction(o->ptr, sdslen((sds)o->ptr));
decrRefCount(o);
return hash;
}
}
} }
/* Sets type and expires */ /* Sets type and expires */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment