]> arthur.barton.de Git - netdata.git/blobdiff - profile/benchmark-dictionary.c
Merge pull request #2022 from l2isbad/dns_query_time_fixes
[netdata.git] / profile / benchmark-dictionary.c
index 61f0d02ddadc7cab1fc76e631dc3ee9b517ea430..8ec3ae0318b4b266f1dad18fc250af9058062da6 100644 (file)
@@ -7,34 +7,31 @@
  *
  */
 
-#include <stdio.h>
-#include <inttypes.h>
-
-#include "dictionary.h"
-#include "main.h"
-#include "log.h"
 #include "common.h"
 
 struct myvalue {
        int i;
 };
 
+void netdata_cleanup_and_exit(int ret) { exit(ret); }
+
 int main(int argc, char **argv) {
        if(argc || argv) {;}
 
-       DICTIONARY *dict = dictionary_create(DICTIONARY_FLAG_SINGLE_THREADED);
+//     DICTIONARY *dict = dictionary_create(DICTIONARY_FLAG_SINGLE_THREADED|DICTIONARY_FLAG_WITH_STATISTICS);
+       DICTIONARY *dict = dictionary_create(DICTIONARY_FLAG_WITH_STATISTICS);
        if(!dict) fatal("Cannot create dictionary.");
 
        struct rusage start, end;
        unsigned long long dt;
        char buf[100 + 1];
        struct myvalue value, *v;
-       int i, max = 10000000, max2;
+       int i, max = 30000000, max2;
 
        // ------------------------------------------------------------------------
 
        getrusage(RUSAGE_SELF, &start);
-       dict->inserts = dict->deletes = dict->searches = 0ULL;
+       dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
        fprintf(stderr, "Inserting %d entries in the dictionary\n", max);
        for(i = 0; i < max; i++) {
                value.i = i;
@@ -45,12 +42,12 @@ int main(int argc, char **argv) {
        getrusage(RUSAGE_SELF, &end);
        dt = (end.ru_utime.tv_sec * 1000000ULL + end.ru_utime.tv_usec) - (start.ru_utime.tv_sec * 1000000ULL + start.ru_utime.tv_usec);
        fprintf(stderr, "Added %d entries in %llu nanoseconds: %llu inserts per second\n", max, dt, max * 1000000ULL / dt);
-       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->inserts, dict->deletes, dict->searches);
+       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->stats->inserts, dict->stats->deletes, dict->stats->searches);
 
        // ------------------------------------------------------------------------
 
        getrusage(RUSAGE_SELF, &start);
-       dict->inserts = dict->deletes = dict->searches = 0ULL;
+       dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
        fprintf(stderr, "Retrieving %d entries from the dictionary\n", max);
        for(i = 0; i < max; i++) {
                value.i = i;
@@ -65,12 +62,12 @@ int main(int argc, char **argv) {
        getrusage(RUSAGE_SELF, &end);
        dt = (end.ru_utime.tv_sec * 1000000ULL + end.ru_utime.tv_usec) - (start.ru_utime.tv_sec * 1000000ULL + start.ru_utime.tv_usec);
        fprintf(stderr, "Read %d entries in %llu nanoseconds: %llu searches per second\n", max, dt, max * 1000000ULL / dt);
-       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->inserts, dict->deletes, dict->searches);
+       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->stats->inserts, dict->stats->deletes, dict->stats->searches);
 
        // ------------------------------------------------------------------------
 
        getrusage(RUSAGE_SELF, &start);
-       dict->inserts = dict->deletes = dict->searches = 0ULL;
+       dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
        fprintf(stderr, "Resetting %d entries in the dictionary\n", max);
        for(i = 0; i < max; i++) {
                value.i = i;
@@ -80,13 +77,13 @@ int main(int argc, char **argv) {
        }
        getrusage(RUSAGE_SELF, &end);
        dt = (end.ru_utime.tv_sec * 1000000ULL + end.ru_utime.tv_usec) - (start.ru_utime.tv_sec * 1000000ULL + start.ru_utime.tv_usec);
-       fprintf(stderr, "Reset %d entries in %llu nanoseconds: %llu inserts per second\n", max, dt, max * 1000000ULL / dt);
-       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->inserts, dict->deletes, dict->searches);
+       fprintf(stderr, "Reset %d entries in %llu nanoseconds: %llu resets per second\n", max, dt, max * 1000000ULL / dt);
+       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->stats->inserts, dict->stats->deletes, dict->stats->searches);
 
        // ------------------------------------------------------------------------
 
        getrusage(RUSAGE_SELF, &start);
-       dict->inserts = dict->deletes = dict->searches = 0ULL;
+       dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
        fprintf(stderr, "Searching  %d non-existing entries in the dictionary\n", max);
        max2 = max * 2;
        for(i = max; i < max2; i++) {
@@ -99,13 +96,13 @@ int main(int argc, char **argv) {
        }
        getrusage(RUSAGE_SELF, &end);
        dt = (end.ru_utime.tv_sec * 1000000ULL + end.ru_utime.tv_usec) - (start.ru_utime.tv_sec * 1000000ULL + start.ru_utime.tv_usec);
-       fprintf(stderr, "Searched %d non-existing entries in %llu nanoseconds: %llu searches per second\n", max, dt, max * 1000000ULL / dt);
-       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->inserts, dict->deletes, dict->searches);
+       fprintf(stderr, "Searched %d non-existing entries in %llu nanoseconds: %llu not found searches per second\n", max, dt, max * 1000000ULL / dt);
+       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->stats->inserts, dict->stats->deletes, dict->stats->searches);
 
        // ------------------------------------------------------------------------
 
        getrusage(RUSAGE_SELF, &start);
-       dict->inserts = dict->deletes = dict->searches = 0ULL;
+       dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
        fprintf(stderr, "Deleting %d entries from the dictionary\n", max);
        for(i = 0; i < max; i++) {
                value.i = i;
@@ -116,12 +113,12 @@ int main(int argc, char **argv) {
        getrusage(RUSAGE_SELF, &end);
        dt = (end.ru_utime.tv_sec * 1000000ULL + end.ru_utime.tv_usec) - (start.ru_utime.tv_sec * 1000000ULL + start.ru_utime.tv_usec);
        fprintf(stderr, "Deleted %d entries in %llu nanoseconds: %llu deletes per second\n", max, dt, max * 1000000ULL / dt);
-       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->inserts, dict->deletes, dict->searches);
+       fprintf(stderr, " > Dictionary: %llu inserts, %llu deletes, %llu searches\n\n", dict->stats->inserts, dict->stats->deletes, dict->stats->searches);
 
        // ------------------------------------------------------------------------
 
        getrusage(RUSAGE_SELF, &start);
-       dict->inserts = dict->deletes = dict->searches = 0ULL;
+       dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
        fprintf(stderr, "Destroying dictionary\n");
        dictionary_destroy(dict);
        getrusage(RUSAGE_SELF, &end);