diff options
author | Damien Lespiau <damien.lespiau@intel.com> | 2015-06-25 12:07:56 +0100 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2015-06-25 17:22:03 +0100 |
commit | 06f5f7065fccc5fbb9f65f6f7d348624e2fa0d2b (patch) | |
tree | 76033fe09d29ecf00fa783e4c7755db583f78519 /lib/igt_stats.c | |
parent | 484e27542d79f78e467004fec5a5192ac6006b34 (diff) |
lib: Add a tiny utility function to compute averages
The master plan would be to get a bit more stats in it, at least the
standard deviation and confidence interval. Just need the average for
now.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Diffstat (limited to 'lib/igt_stats.c')
-rw-r--r-- | lib/igt_stats.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/igt_stats.c b/lib/igt_stats.c new file mode 100644 index 000000000..fcf7abe1b --- /dev/null +++ b/lib/igt_stats.c @@ -0,0 +1,56 @@ +/* + * Copyright © 2015 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + */ + +#include "igt_core.h" +#include "igt_stats.h" + +void igt_stats_init(igt_stats_t *stats, unsigned int capacity) +{ + stats->values = calloc(capacity, sizeof(*stats->values)); + igt_assert(stats->values); + stats->capacity = capacity; + stats->n_values = 0; +} + +void igt_stats_fini(igt_stats_t *stats) +{ + free(stats->values); +} + +void igt_stats_push(igt_stats_t *stats, uint64_t value) +{ + igt_assert(stats->n_values < stats->capacity); + stats->values[stats->n_values++] = value; +} + +double igt_stats_get_average(igt_stats_t *stats) +{ + unsigned int i; + double a = 0.0; + + for (i = 0; i < stats->n_values; i++) + a += (double)stats->values[i] / stats->n_values; + + return a; +} |