!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/netdata/tests/profile/   drwxr-xr-x
Free 13.09 GB of 57.97 GB (22.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     benchmark-dictionary.c (5.58 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-3.0-or-later */
/*
 * 1. build netdata (as normally)
 * 2. cd tests/profile/
 * 3. compile with:
 *    gcc -O3 -Wall -Wextra -I ../../src/ -I ../../ -o benchmark-dictionary benchmark-dictionary.c ../../src/dictionary.o ../../src/log.o ../../src/avl.o ../../src/common.o -pthread
 *
 */

#include "config.h"
#include "libnetdata/libnetdata.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_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 = 30000000, max2;

    // ------------------------------------------------------------------------

    getrusage(RUSAGE_SELF, &start);
    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;
        snprintf(buf, 100, "%d", i);

        dictionary_set(dict, buf, &value, sizeof(struct myvalue));
    }
    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->stats->inserts, dict->stats->deletes, dict->stats->searches);

    // ------------------------------------------------------------------------

    getrusage(RUSAGE_SELF, &start);
    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;
        snprintf(buf, 100, "%d", i);

        v = dictionary_get(dict, buf);
        if(!v)
            fprintf(stderr, "ERROR: cannot get value %d from the dictionary\n", i);
        else if(v->i != i)
            fprintf(stderr, "ERROR: expected %d but got %d\n", i, v->i);
    }
    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->stats->inserts, dict->stats->deletes, dict->stats->searches);

    // ------------------------------------------------------------------------

    getrusage(RUSAGE_SELF, &start);
    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;
        snprintf(buf, 100, "%d", i);

        dictionary_set(dict, buf, &value, sizeof(struct myvalue));
    }
    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 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->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++) {
        value.i = i;
        snprintf(buf, 100, "%d", i);

        v = dictionary_get(dict, buf);
        if(v)
            fprintf(stderr, "ERROR: cannot got non-existing value %d from the dictionary\n", i);
    }
    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 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->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;
        snprintf(buf, 100, "%d", i);

        dictionary_del(dict, buf);
    }
    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->stats->inserts, dict->stats->deletes, dict->stats->searches);

    // ------------------------------------------------------------------------

    getrusage(RUSAGE_SELF, &start);
    dict->stats->inserts = dict->stats->deletes = dict->stats->searches = 0ULL;
    fprintf(stderr, "Destroying dictionary\n");
    dictionary_destroy(dict);
    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, "Destroyed in %llu nanoseconds\n", dt);

    return 0;
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0069 ]--