regressions/ck_hs: Serial benchmark coverage for DELETE mode.

ck_pring
Samy Al Bahra 12 years ago
parent e87a4b78c9
commit c2f5ca52f6

@ -42,6 +42,7 @@ static ck_hs_t hs;
static char **keys; static char **keys;
static size_t keys_length = 0; static size_t keys_length = 0;
static size_t keys_capacity = 128; static size_t keys_capacity = 128;
static unsigned long global_seed;
static void * static void *
hs_malloc(size_t r) hs_malloc(size_t r)
@ -85,11 +86,19 @@ hs_compare(const void *previous, const void *compare)
} }
static void static void
set_init(void) set_destroy(void)
{ {
common_srand48((long int)time(NULL)); ck_hs_destroy(&hs);
if (ck_hs_init(&hs, CK_HS_MODE_OBJECT | CK_HS_MODE_SPMC, hs_hash, hs_compare, &my_allocator, 8, common_lrand48()) == false) { return;
}
static void
set_init(unsigned int size, unsigned int mode)
{
if (ck_hs_init(&hs, CK_HS_MODE_OBJECT | CK_HS_MODE_SPMC | mode, hs_hash, hs_compare,
&my_allocator, size, global_seed) == false) {
perror("ck_hs_init"); perror("ck_hs_init");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@ -189,35 +198,21 @@ keys_shuffle(char **k)
return; return;
} }
int static void
main(int argc, char *argv[]) run_test(const char *file, size_t r, unsigned int size, unsigned int mode)
{ {
FILE *fp; FILE *fp;
char buffer[512]; char buffer[512];
size_t i, j, r; size_t i, j;
unsigned int d = 0; unsigned int d = 0;
uint64_t s, e, a, ri, si, ai, sr, rg, sg, ag, sd, ng, ss, sts, su; uint64_t s, e, a, ri, si, ai, sr, rg, sg, ag, sd, ng, ss, sts, su;
struct ck_hs_stat st; struct ck_hs_stat st;
char **t; char **t;
r = 20;
s = 8;
srand(time(NULL));
if (argc < 2) {
ck_error("Usage: ck_hs <dictionary> [<repetitions> <initial size>]\n");
}
if (argc >= 3)
r = atoi(argv[2]);
if (argc >= 4)
s = (uint64_t)atoi(argv[3]);
keys = malloc(sizeof(char *) * keys_capacity); keys = malloc(sizeof(char *) * keys_capacity);
assert(keys != NULL); assert(keys != NULL);
fp = fopen(argv[1], "r"); fp = fopen(file, "r");
assert(fp != NULL); assert(fp != NULL);
while (fgets(buffer, sizeof(buffer), fp) != NULL) { while (fgets(buffer, sizeof(buffer), fp) != NULL) {
@ -236,7 +231,7 @@ main(int argc, char *argv[])
assert(t != NULL); assert(t != NULL);
keys = t; keys = t;
set_init(); set_init(size, mode);
for (i = 0; i < keys_length; i++) for (i = 0; i < keys_length; i++)
d += set_insert(keys[i]) == false; d += set_insert(keys[i]) == false;
ck_hs_stat(&hs, &st); ck_hs_stat(&hs, &st);
@ -244,10 +239,6 @@ main(int argc, char *argv[])
fprintf(stderr, "# %zu entries stored, %u duplicates, %u probe.\n", fprintf(stderr, "# %zu entries stored, %u duplicates, %u probe.\n",
set_count(), d, st.probe_maximum); set_count(), d, st.probe_maximum);
fprintf(stderr, "# reverse_insertion serial_insertion random_insertion serial_swap "
"serial_replace reverse_get serial_get random_get serial_remove negative_get tombstone "
"set_unique\n\n");
a = 0; a = 0;
for (j = 0; j < r; j++) { for (j = 0; j < r; j++) {
if (set_reset() == false) { if (set_reset() == false) {
@ -407,6 +398,7 @@ main(int argc, char *argv[])
if (set_insert(keys[i]) == true) if (set_insert(keys[i]) == true)
continue; continue;
free(keys[i]);
keys[i] = keys[--keys_length]; keys[i] = keys[--keys_length];
} }
@ -441,6 +433,43 @@ main(int argc, char *argv[])
"%" PRIu64 "\n", "%" PRIu64 "\n",
keys_length, ri, si, ai, ss, sr, rg, sg, ag, sd, ng, sts, su); keys_length, ri, si, ai, ss, sr, rg, sg, ag, sd, ng, sts, su);
fclose(fp);
for (i = 0; i < keys_length; i++) {
free(keys[i]);
}
free(keys);
keys_length = 0;
set_destroy();
return;
}
int
main(int argc, char *argv[])
{
unsigned int r, size;
common_srand48((long int)time(NULL));
if (argc < 2) {
ck_error("Usage: ck_hs <dictionary> [<repetitions> <initial size>]\n");
}
r = 16;
if (argc >= 3)
r = atoi(argv[2]);
size = 8;
if (argc >= 4)
size = atoi(argv[3]);
global_seed = common_lrand48();
run_test(argv[1], r, size, 0);
run_test(argv[1], r, size, CK_HS_MODE_DELETE);
fprintf(stderr, "# reverse_insertion serial_insertion random_insertion serial_swap "
"serial_replace reverse_get serial_get random_get serial_remove negative_get tombstone "
"set_unique\n\n");
return 0; return 0;
} }

Loading…
Cancel
Save