From: Svetlana Date: Mon, 17 Aug 2020 11:31:54 +0000 (+0000) Subject: remove distribution benchmark as full benchmark was created in google-interns-2020... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8d2095fadd5e67e09d0298da474a7c8bfcc7ed23;p=thirdparty%2Fcollectd.git remove distribution benchmark as full benchmark was created in google-interns-2020 branch --- diff --git a/src/daemon/distribution_benchmark.c b/src/daemon/distribution_benchmark.c deleted file mode 100644 index b48069d75..000000000 --- a/src/daemon/distribution_benchmark.c +++ /dev/null @@ -1,111 +0,0 @@ -#include -#include -#include -#include - -#include "distribution.h" - -const size_t NUM_UPDATES = 1e6; -const size_t NUM_PERCENTILES = 1e6; -const size_t MIXED = 1e6; - -distribution_t *build(size_t num_buckets) { - srand(5); - double custom[num_buckets - 1]; - custom[0] = rand() % 100; - for (size_t i = 1; i < num_buckets - 1; i++) { - custom[i] = custom[i - 1] + rand() % 100 + 1; - } - distribution_t *dist = distribution_new_custom(num_buckets - 1, custom); - return dist; -} - -double calculate_update_time(distribution_t *dist) { - double *updates = calloc(NUM_UPDATES, sizeof(*updates)); - for (size_t i = 0; i < NUM_UPDATES; i++) { - updates[i] = - (rand() * RAND_MAX + rand()) % (distribution_num_buckets(dist) * 100); - } - struct timespec start, finish; - clock_gettime(CLOCK_MONOTONIC, &start); - for (size_t i = 0; i < NUM_UPDATES; i++) { - distribution_update(dist, updates[i]); - } - clock_gettime(CLOCK_MONOTONIC, &finish); - double update_dur = 1000.0 * (finish.tv_sec - start.tv_sec) + - 1e-6 * (finish.tv_nsec - start.tv_nsec); - double average = update_dur / NUM_UPDATES * 1000000.0; - free(updates); - return average; -} - -double calculate_percentile_time(distribution_t *dist) { - double *percentiles = calloc(NUM_PERCENTILES, sizeof(*percentiles)); - for (size_t i = 0; i < NUM_PERCENTILES; i++) { - percentiles[i] = 100.0 * rand() / RAND_MAX; - } - struct timespec start, finish; - clock_gettime(CLOCK_MONOTONIC, &start); - for (size_t i = 0; i < NUM_PERCENTILES; i++) { - distribution_percentile(dist, percentiles[i]); - } - clock_gettime(CLOCK_MONOTONIC, &finish); - double percentile_dur = 1000.0 * (finish.tv_sec - start.tv_sec) + - 1e-6 * (finish.tv_nsec - start.tv_nsec); - double average = percentile_dur / NUM_PERCENTILES * 1000000.0; - free(percentiles); - return average; -} - -double mixed(size_t num_buckets) { - distribution_t *dist = build(num_buckets); - double *updates = calloc(MIXED / 10 * 9, sizeof(*updates)); - double *percentiles = calloc(MIXED / 10, sizeof(*percentiles)); - for (size_t i = 0; i < MIXED / 10 * 9; i++) - updates[i] = (rand() * RAND_MAX + rand()) % (num_buckets * 100); - for (size_t i = 0; i < MIXED / 10; i++) - percentiles[i] = 100.0 * rand() / RAND_MAX; - - size_t uid = 0; - size_t pid = 0; - struct timespec start, finish; - clock_gettime(CLOCK_MONOTONIC, &start); - double val = 0; - for (size_t i = 0; i < MIXED; i++) { - if (i % 10 == 9) { - double d = distribution_percentile(dist, percentiles[pid++]); - if (d != INFINITY) - val += d; - } else - distribution_update(dist, updates[uid++]); - } - clock_gettime(CLOCK_MONOTONIC, &finish); - double dur = 1000.0 * (finish.tv_sec - start.tv_sec) + - 1e-6 * (finish.tv_nsec - start.tv_nsec); - distribution_destroy(dist); - free(percentiles); - free(updates); - // printf("%f\n", val); - return dur; -} - -int main() { - FILE *fout = fopen("benchmark_small.csv", "w"); - fprintf(fout, - "Number of buckets,Average for update,Average for percentile,Total " - "for %lu mixed iterations\n", - MIXED); - for (size_t num_buckets = 50; num_buckets <= 5000; num_buckets += 50) { - distribution_t *dist = build(num_buckets); - fprintf(fout, "%lu,", num_buckets); - fprintf(fout, "%f,", calculate_update_time(dist)); - fprintf(fout, "%f,", calculate_percentile_time(dist)); - fprintf(fout, "%f\n", mixed(num_buckets)); - // fprintf(fout, "%lu,%f,%f,%f\n", num_buckets, calculate_update_time(dist), - // calculate_percentile_time(dist), mixed(num_buckets)); - distribution_destroy(dist); - printf("OK %lu\n", num_buckets); - } - fclose(fout); - return 0; -}