test
This commit is contained in:
parent
20436cd3b2
commit
f8fc442b63
|
@ -24,15 +24,17 @@
|
|||
#define GREEN "\033[1;32m"
|
||||
#define NC "\033[0m"
|
||||
|
||||
int32_t capacity = 100000;
|
||||
int32_t q1Times = 1;
|
||||
int32_t q2Times = 1;
|
||||
int32_t capacity = 128;
|
||||
int32_t q1Times = 10;
|
||||
int32_t q2Times = 10;
|
||||
int32_t keyNum = 100000;
|
||||
int32_t printInterval = 10000;
|
||||
int32_t printInterval = 1000;
|
||||
void * hashHandle;
|
||||
pthread_t thread;
|
||||
|
||||
typedef struct HashTestRow {
|
||||
int32_t size;
|
||||
void * ptr;
|
||||
int32_t keySize;
|
||||
char key[100];
|
||||
} HashTestRow;
|
||||
|
||||
void shellParseArgument(int argc, char *argv[]);
|
||||
|
@ -40,7 +42,7 @@ void shellParseArgument(int argc, char *argv[]);
|
|||
void testHashPerformance() {
|
||||
int64_t initialMs = taosGetTimestampMs();
|
||||
_hash_fn_t hashFp = taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY);
|
||||
void * hashHandle = taosHashInit(capacity, hashFp, true);
|
||||
hashHandle = taosHashInit(128, hashFp, true, HASH_NO_LOCK);
|
||||
|
||||
int64_t startMs = taosGetTimestampMs();
|
||||
float seconds = (startMs - initialMs) / 1000.0;
|
||||
|
@ -48,17 +50,25 @@ void testHashPerformance() {
|
|||
|
||||
for (int32_t t = 1; t <= keyNum; ++t) {
|
||||
HashTestRow row = {0};
|
||||
char key[100] = {0};
|
||||
int32_t keySize = sprintf(key, "0.db.st%d", t);
|
||||
row.keySize = sprintf(row.key, "0.db.st%d", t);
|
||||
|
||||
for (int32_t q = 0; q < q1Times; q++) {
|
||||
taosHashGet(hashHandle, &key, keySize);
|
||||
taosHashGet(hashHandle, row.key, row.keySize);
|
||||
}
|
||||
|
||||
taosHashPut(hashHandle, key, keySize, &row, sizeof(HashTestRow));
|
||||
taosHashPut(hashHandle, row.key, row.keySize, &row, sizeof(HashTestRow));
|
||||
|
||||
for (int32_t q = 0; q < q2Times; q++) {
|
||||
taosHashGet(hashHandle, &key, keySize);
|
||||
taosHashGet(hashHandle, row.key, row.keySize);
|
||||
}
|
||||
|
||||
// test iterator
|
||||
{
|
||||
HashTestRow *row = taosHashIterate(hashHandle, NULL);
|
||||
while (row) {
|
||||
taosHashGet(hashHandle, row->key, row->keySize);
|
||||
row = taosHashIterate(hashHandle, row);
|
||||
}
|
||||
}
|
||||
|
||||
if (t % printInterval == 0) {
|
||||
|
@ -80,9 +90,35 @@ void testHashPerformance() {
|
|||
taosHashCleanup(hashHandle);
|
||||
}
|
||||
|
||||
void *multiThreadFunc(void *param) {
|
||||
for (int i = 0; i < 100; ++i) {
|
||||
taosMsleep(1000);
|
||||
HashTestRow *row = taosHashIterate(hashHandle, NULL);
|
||||
while (row) {
|
||||
taosHashGet(hashHandle, row->key, row->keySize);
|
||||
row = taosHashIterate(hashHandle, row);
|
||||
}
|
||||
int64_t hashSize = taosHashGetSize(hashHandle);
|
||||
pPrint("i:%d hashSize:%ld", i, hashSize);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void multiThreadTest() {
|
||||
pthread_attr_t thattr;
|
||||
pthread_attr_init(&thattr);
|
||||
pthread_attr_setdetachstate(&thattr, PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
// Start threads to write
|
||||
pthread_create(&thread, &thattr, multiThreadFunc, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
shellParseArgument(argc, argv);
|
||||
multiThreadTest();
|
||||
testHashPerformance();
|
||||
pthread_join(thread, NULL);
|
||||
}
|
||||
|
||||
void printHelp() {
|
||||
|
|
Loading…
Reference in New Issue