void do_bench(struct nessdb *db, struct random *rnd, uint32_t loop) { uint32_t i; int done = 0;; int next_report = 100; char kbuf[KEY_SIZE]; for (i = 0; i < loop; i++) { uint32_t krnd = rnd_next(rnd); snprintf(kbuf, KEY_SIZE, "%016d", krnd); char *vbuf = rnd_str(rnd, VAL_SIZE); struct msg k = {.data = kbuf, .size = KEY_SIZE}; struct msg v = {.data = vbuf, .size = VAL_SIZE}; db_set(db, &k, &v); done++; if (done >= next_report) { if (next_report < 1000) next_report += 100; else if (next_report < 5000) next_report += 500; else if (next_report < 10000) next_report += 1000; else if (next_report < 50000) next_report += 5000; else if (next_report < 100000) next_report += 10000; else if (next_report < 500000) next_report += 50000; else next_report += 100000; fprintf(stderr, "random write finished %d ops%30s\r", done, ""); fflush(stderr); } } }
void dbwrite(char *name, int random) { uint32_t i; int done = 0;; int next_report = 100; char kbuf[KEY_SIZE]; for (i = 0; i < FLAGS_num; i++) { char *vbuf; int key = random ? rnd_next(rnd) % FLAGS_num : i; memset(kbuf, 0, KEY_SIZE); snprintf(kbuf, KEY_SIZE, "%016d", key); vbuf = rnd_str(rnd, VAL_SIZE); struct msg k = {.data = kbuf, .size = strlen(kbuf)}; struct msg v = {.data = vbuf, .size = VAL_SIZE}; if (db_set(db, &k, &v) != NESS_OK) { fprintf(stderr, " set error\n"); } done++; if (done >= next_report) { if (next_report < 1000) next_report += 100; else if (next_report < 5000) next_report += 500; else if (next_report < 10000) next_report += 1000; else if (next_report < 50000) next_report += 5000; else if (next_report < 100000) next_report += 10000; else if (next_report < 500000) next_report += 50000; else next_report += 100000; fprintf(stderr, "%s finished %d ops%30s\r", name, done, ""); fflush(stderr); } } }