From: Michael Tremer Date: Tue, 12 Dec 2017 16:58:16 +0000 (+0000) Subject: database: Log how long it took to retrieve an AS X-Git-Tag: 0.9.0~166 X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Flibloc.git;a=commitdiff_plain;h=8f3e2a0611d39768b250ad142756ce1b4cfd1ff0;ds=sidebyside database: Log how long it took to retrieve an AS Signed-off-by: Michael Tremer --- diff --git a/src/database.c b/src/database.c index 3a4f8b8..e5460da 100644 --- a/src/database.c +++ b/src/database.c @@ -272,6 +272,9 @@ LOC_EXPORT int loc_database_get_as(struct loc_database* db, struct loc_as** as, off_t lo = 0; off_t hi = db->as_count - 1; + // Save start time + clock_t start = clock(); + while (lo <= hi) { off_t i = (lo + hi) / 2; @@ -282,8 +285,15 @@ LOC_EXPORT int loc_database_get_as(struct loc_database* db, struct loc_as** as, // Check if this is a match uint32_t as_number = loc_as_get_number(*as); - if (as_number == number) + if (as_number == number) { + clock_t end = clock(); + + // Log how fast this has been + DEBUG(db->ctx, "Found AS%u in %.8fs\n", as_number, + (double)(end - start) / CLOCKS_PER_SEC); + return 0; + } // If it wasn't, we release the AS and // adjust our search pointers @@ -298,5 +308,5 @@ LOC_EXPORT int loc_database_get_as(struct loc_database* db, struct loc_as** as, // Nothing found *as = NULL; - return 0; + return 1; } diff --git a/src/test-as.c b/src/test-as.c index 48c5ab7..0c4d391 100644 --- a/src/test-as.c +++ b/src/test-as.c @@ -22,7 +22,7 @@ #include #include "database.h" -#define TEST_AS_COUNT 100 +#define TEST_AS_COUNT 5000 int main(int argc, char** argv) { int err; @@ -85,10 +85,14 @@ int main(int argc, char** argv) { } struct loc_as* as; - err = loc_database_get_as(db, &as, 99); - if (err) { - fprintf(stderr, "Could not find AS99\n"); - exit(EXIT_FAILURE); + for (unsigned int i = 1; i <= 10; i++) { + err = loc_database_get_as(db, &as, i); + if (err) { + fprintf(stderr, "Could not find AS%d\n", i); + exit(EXIT_FAILURE); + } + + loc_as_unref(as); } loc_database_unref(db);