int main(int argc, const char *argv[]) { struct timeval start, end; double elapsed; dict *d; struct bftree *tree; const int times = 500; struct bftree_opts opt = { NULL, NULL, bftreeSdsKeyCompare, (void (*)(void*))sdsfree, (void (*)(void*))sdsfree }; tree = bftree_create(&opt); d = dictCreate(&sdsdict_type, NULL); gettimeofday(&start, NULL); redis_add(d, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("redis add %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); tree = bftree_add(tree, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("bftree add %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); redis_fetch(d, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("redis get %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); bftree_fetch(tree, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("bftree get %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); redis_del(d, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("redis delete %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); bftree_delele(tree, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("bftree delete %d elements seconds: %f\n", times, elapsed); bftree_free(tree); dictRelease(d); return 0; }
static void fiber_worker(ACL_FIBER *fiber, void *ctx) { ACL_CHANNEL *chan = ((MYCHAN *) ctx)->chan; while (true) { PKT* pkt = (PKT *) acl_channel_recvp(chan); if (pkt == NULL) { printf("fiber-%d: acl_channel_recvp NULL\r\n", acl_fiber_id(fiber)); break; } if (pkt->cmd.equal("set", false)) { if (redis_set(*fiber, *chan, *pkt) == false) { printf("fiber-%d: redis_set error\r\n", acl_fiber_id(fiber)); break; } } else if (pkt->cmd.equal("get", false)) { if (redis_get(*fiber, *chan, *pkt) == false) { printf("fiber-%d: redis_get error\r\n", acl_fiber_id(fiber)); break; } } else if (pkt->cmd.equal("del", false)) { if (redis_del(*fiber, *chan, *pkt) == false) { printf("fiber-%d: redis_del error\r\n", acl_fiber_id(fiber)); break; } } else printf("unknown cmd: %s\r\n", pkt->cmd.c_str()); } }