X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fstrset%2Ftools%2Fspeed.c;h=325b3a888d63e9787c99dd3103b76cb5936ec372;hp=8c815699012208a3ac7d3bad146a10e88c7238c9;hb=31bf658f422cedf13a7a568132f1cdadcc4432c4;hpb=c0117ccb503af9b067695441199a71db8846a296 diff --git a/ccan/strset/tools/speed.c b/ccan/strset/tools/speed.c index 8c815699..325b3a88 100644 --- a/ccan/strset/tools/speed.c +++ b/ccan/strset/tools/speed.c @@ -19,8 +19,8 @@ #15: Post-Churn lookup (miss): 175-186(176) #16: Post-Churn lookup (random): 522-534(525) */ -#include -#include +#include +#include #include #include #include @@ -32,44 +32,44 @@ #include /* Nanoseconds per operation */ -static size_t normalize(const struct timespec *start, - const struct timespec *stop, +static size_t normalize(const struct timeabs *start, + const struct timeabs *stop, unsigned int num) { - return time_to_nsec(time_divide(time_sub(*stop, *start), num)); + return time_to_nsec(time_divide(time_between(*stop, *start), num)); } int main(int argc, char *argv[]) { size_t i, j, num; - struct timespec start, stop; + struct timeabs start, stop; struct strset set; char **words, **misswords; - words = strsplit(NULL, grab_file(NULL, - argv[1] ? argv[1] : "/usr/share/dict/words", - NULL), "\n"); + words = tal_strsplit(NULL, grab_file(NULL, + argv[1] ? argv[1] : "/usr/share/dict/words"), + "\n", STR_NO_EMPTY); strset_init(&set); - num = talloc_array_length(words) - 1; + num = tal_count(words) - 1; printf("%zu words\n", num); /* Append and prepend last char for miss testing. */ - misswords = talloc_array(words, char *, num); + misswords = tal_arr(words, char *, num); for (i = 0; i < num; i++) { char lastc; if (strlen(words[i])) lastc = words[i][strlen(words[i])-1]; else lastc = 'z'; - misswords[i] = talloc_asprintf(misswords, "%c%s%c%c", - lastc, words[i], lastc, lastc); + misswords[i] = tal_fmt(misswords, "%c%s%c%c", + lastc, words[i], lastc, lastc); } printf("#01: Initial insert: "); fflush(stdout); start = time_now(); for (i = 0; i < num; i++) - strset_set(&set, words[i]); + strset_add(&set, words[i]); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i++) - if (!strset_test(&set, words[i])) + if (!strset_get(&set, words[i])) abort(); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -91,7 +91,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i++) { - if (strset_test(&set, misswords[i])) + if (strset_get(&set, misswords[i])) abort(); } stop = time_now(); @@ -102,7 +102,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) - if (!strset_test(&set, words[j])) + if (!strset_get(&set, words[j])) abort(); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -111,7 +111,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i++) - if (!strset_clear(&set, words[i])) + if (!strset_del(&set, words[i])) abort(); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -120,7 +120,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i++) - strset_set(&set, words[i]); + strset_add(&set, words[i]); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -128,7 +128,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i+=2) - if (!strset_clear(&set, words[i])) + if (!strset_del(&set, words[i])) abort(); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -138,7 +138,7 @@ int main(int argc, char *argv[]) start = time_now(); for (i = 0; i < num; i+=2) - strset_set(&set, misswords[i]); + strset_add(&set, misswords[i]); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -146,10 +146,10 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 1; i < num; i+=2) - if (!strset_test(&set, words[i])) + if (!strset_get(&set, words[i])) abort(); for (i = 0; i < num; i+=2) { - if (!strset_test(&set, misswords[i])) + if (!strset_get(&set, misswords[i])) abort(); } stop = time_now(); @@ -159,10 +159,10 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i+=2) - if (strset_test(&set, words[i])) + if (strset_get(&set, words[i])) abort(); for (i = 1; i < num; i+=2) { - if (strset_test(&set, misswords[i])) + if (strset_get(&set, misswords[i])) abort(); } stop = time_now(); @@ -173,9 +173,9 @@ int main(int argc, char *argv[]) printf("#11: Churn 1: "); start = time_now(); for (j = 0; j < num; j+=2) { - if (!strset_clear(&set, misswords[j])) + if (!strset_del(&set, misswords[j])) abort(); - if (!strset_set(&set, words[j])) + if (!strset_add(&set, words[j])) abort(); } stop = time_now(); @@ -184,9 +184,9 @@ int main(int argc, char *argv[]) printf("#12: Churn 2: "); start = time_now(); for (j = 1; j < num; j+=2) { - if (!strset_clear(&set, words[j])) + if (!strset_del(&set, words[j])) abort(); - if (!strset_set(&set, misswords[j])) + if (!strset_add(&set, misswords[j])) abort(); } stop = time_now(); @@ -195,9 +195,9 @@ int main(int argc, char *argv[]) printf("#13: Churn 3: "); start = time_now(); for (j = 1; j < num; j+=2) { - if (!strset_clear(&set, misswords[j])) + if (!strset_del(&set, misswords[j])) abort(); - if (!strset_set(&set, words[j])) + if (!strset_add(&set, words[j])) abort(); } stop = time_now(); @@ -208,7 +208,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i++) - if (!strset_test(&set, words[i])) + if (!strset_get(&set, words[i])) abort(); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num)); @@ -217,7 +217,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0; i < num; i++) { - if (strset_test(&set, misswords[i])) + if (strset_get(&set, misswords[i])) abort(); } stop = time_now(); @@ -228,7 +228,7 @@ int main(int argc, char *argv[]) fflush(stdout); start = time_now(); for (i = 0, j = 0; i < num; i++, j = (j + 10007) % num) - if (!strset_test(&set, words[j])) + if (!strset_get(&set, words[j])) abort(); stop = time_now(); printf(" %zu ns\n", normalize(&start, &stop, num));