Faster version of the function hashing possibly encoded objects, leading to a general speed gain when working with Sets of integers

This commit is contained in:
antirez 2010-02-02 12:19:24 +01:00
parent 3c68de9b01
commit ed9e496634

16
redis.c
View File

@ -954,10 +954,24 @@ static int dictEncObjKeyCompare(void *privdata, const void *key1,
static unsigned int dictEncObjHash(const void *key) {
robj *o = (robj*) key;
if (o->encoding == REDIS_ENCODING_RAW) {
return dictGenHashFunction(o->ptr, sdslen((sds)o->ptr));
} else {
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);
unsigned int hash = dictGenHashFunction(o->ptr, sdslen((sds)o->ptr));
hash = dictGenHashFunction(o->ptr, sdslen((sds)o->ptr));
decrRefCount(o);
return hash;
}
}
}
/* Sets type and expires */