refactor(query): opt perf by remove some functions.

This commit is contained in:
Haojun Liao 2023-02-03 14:58:55 +08:00
parent d4e3a9cf2b
commit 299afd98d9
2 changed files with 8 additions and 7 deletions

View File

@ -116,6 +116,7 @@ typedef struct SHNode {
struct SHNode *next; struct SHNode *next;
uint32_t keyLen : 20; uint32_t keyLen : 20;
uint32_t dataLen : 12; uint32_t dataLen : 12;
uint32_t hashVal;
char data[]; char data[];
} SHNode; } SHNode;
#pragma pack(pop) #pragma pack(pop)

View File

@ -114,7 +114,8 @@ static void* doInternalAlloc(SSHashObj* pHashObj, int32_t size) {
} }
} }
static SHNode *doCreateHashNode(SSHashObj* pHashObj, const void *key, size_t keyLen, const void *data, size_t dataLen) { static SHNode *doCreateHashNode(SSHashObj *pHashObj, const void *key, size_t keyLen, const void *data, size_t dataLen,
uint32_t hashVal) {
SHNode *pNewNode = doInternalAlloc(pHashObj, sizeof(SHNode) + keyLen + dataLen); SHNode *pNewNode = doInternalAlloc(pHashObj, sizeof(SHNode) + keyLen + dataLen);
if (!pNewNode) { if (!pNewNode) {
terrno = TSDB_CODE_OUT_OF_MEMORY; terrno = TSDB_CODE_OUT_OF_MEMORY;
@ -124,6 +125,8 @@ static SHNode *doCreateHashNode(SSHashObj* pHashObj, const void *key, size_t key
pNewNode->keyLen = keyLen; pNewNode->keyLen = keyLen;
pNewNode->dataLen = dataLen; pNewNode->dataLen = dataLen;
pNewNode->next = NULL; pNewNode->next = NULL;
pNewNode->hashVal = hashVal;
if (data) { if (data) {
memcpy(GET_SHASH_NODE_DATA(pNewNode), data, dataLen); memcpy(GET_SHASH_NODE_DATA(pNewNode), data, dataLen);
} }
@ -167,10 +170,7 @@ static void tSimpleHashTableResize(SSHashObj *pHashObj) {
SHNode *pPrev = NULL; SHNode *pPrev = NULL;
while (pNode != NULL) { while (pNode != NULL) {
void *key = GET_SHASH_NODE_KEY(pNode, pNode->dataLen); int32_t newIdx = HASH_INDEX(pNode->hashVal, pHashObj->capacity);
uint32_t hashVal = (*pHashObj->hashFp)(key, (uint32_t)pNode->keyLen);
int32_t newIdx = HASH_INDEX(hashVal, pHashObj->capacity);
pNext = pNode->next; pNext = pNode->next;
if (newIdx != idx) { if (newIdx != idx) {
if (!pPrev) { if (!pPrev) {
@ -211,7 +211,7 @@ int32_t tSimpleHashPut(SSHashObj *pHashObj, const void *key, size_t keyLen, cons
SHNode *pNode = pHashObj->hashList[slot]; SHNode *pNode = pHashObj->hashList[slot];
if (!pNode) { if (!pNode) {
SHNode *pNewNode = doCreateHashNode(pHashObj, key, keyLen, data, dataLen); SHNode *pNewNode = doCreateHashNode(pHashObj, key, keyLen, data, dataLen, hashVal);
if (!pNewNode) { if (!pNewNode) {
return -1; return -1;
} }
@ -229,7 +229,7 @@ int32_t tSimpleHashPut(SSHashObj *pHashObj, const void *key, size_t keyLen, cons
} }
if (!pNode) { if (!pNode) {
SHNode *pNewNode = doCreateHashNode(pHashObj, key, keyLen, data, dataLen); SHNode *pNewNode = doCreateHashNode(pHashObj, key, keyLen, data, dataLen, hashVal);
if (!pNewNode) { if (!pNewNode) {
return -1; return -1;
} }