mindex.c

In-memory ordered store and fetch library
git clone git://git.finwo.net/lib/mindex.c
Log | Files | Refs | README | LICENSE

commit a4cf67f3ab4c1ce276938a241f26d2f914653527
parent 8b6bc0fc0643d51c3092c8aaf10718574136cfc5
Author: Yersa Nordman <yersa@finwo.nl>
Date:   Sun,  1 Oct 2023 21:17:26 +0200

Added an actual benchmark

Diffstat:
Mbenchmark.c | 56+++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 39 insertions(+), 17 deletions(-)

diff --git a/benchmark.c b/benchmark.c @@ -8,29 +8,49 @@ #include <unistd.h> #include "finwo/benchmark.h" +#include "mindex.h" -/* usleep(): Sleep for the requested number of microseconds. */ -int musleep(long usec) { - struct timespec ts; - int res; +static void fn_purge(const void *item, void *udata) { + free(item); + // Intentionally empty +} - if (usec < 0) { - return -1; - } +static int fn_compare_string(const void *a, const void *b, void *udata) { + const char *sa = (char*)a; + const char *sb = (char*)b; + return strcmp(sa, sb); +} - ts.tv_sec = usec / 1000000; - ts.tv_nsec = (usec % 1000000) * 1000; +char random_char() { + char *alphabet = "0123456789abcdef"; + int length = strlen(alphabet); + return alphabet[rand() % length]; +} - do { - res = nanosleep(&ts, &ts); - } while (res && errno == EINTR); +char *random_str(int length) { + char *str = malloc(length + 1); + for(int i=0; i<length; i++) { + str[i] = random_char(); + } + str[length] = '\0'; + return str; +} - return res; +void mindex_bmark_rstr_1024() { + for(int i=0; i<1024; i++) { + free(random_str(16)); + } } -void mindex_some_bmark_method() { - // Intentionally empty - musleep(100); +void mindex_bmark_assign_1024() { +/* struct mindex_t * mindex_init(int (*compare)(const void *a, const void *b, void *udata), void (*purge)(const void *item, void *udata), void *udata); */ + struct mindex_t *mindex = mindex_init(fn_compare_string, fn_purge, NULL); + /* fr */ + for(int i=0; i<1024; i++) { + mindex_set(mindex, random_str(16)); + } + + mindex_free(mindex); } int main() { @@ -39,6 +59,8 @@ int main() { 1, 5, 50, 95, 99, 0 }; - BMARK(mindex_some_bmark_method); + BMARK(mindex_bmark_rstr_1024); + BMARK(mindex_bmark_assign_1024); return bmark_run(100, percentiles); + return 0; }