Example #1
0
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);
		}
	}
}
Example #2
0
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);
		}
	}
}