mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-09 17:06:14 +00:00
stats: Add functions to retrieve min/max values of the dataset
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
This commit is contained in:
parent
87009f3d7b
commit
4a89a841a1
@ -28,6 +28,8 @@
|
||||
#include "igt_core.h"
|
||||
#include "igt_stats.h"
|
||||
|
||||
#define U64_MAX ((uint64_t)~0ULL)
|
||||
|
||||
/**
|
||||
* SECTION:igt_stats
|
||||
* @short_description: Tools for statistical analysis
|
||||
@ -78,6 +80,9 @@ 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->min = U64_MAX;
|
||||
stats->max = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -151,7 +156,35 @@ void igt_stats_push(igt_stats_t *stats, uint64_t value)
|
||||
{
|
||||
igt_assert(stats->n_values < stats->capacity);
|
||||
stats->values[stats->n_values++] = value;
|
||||
|
||||
stats->mean_variance_valid = false;
|
||||
|
||||
if (value < stats->min)
|
||||
stats->min = value;
|
||||
if (value > stats->max)
|
||||
stats->max = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* igt_stats_get_min:
|
||||
* @stats: An #igt_stats_t instance
|
||||
*
|
||||
* Retrieves the minimal value in @stats
|
||||
*/
|
||||
uint64_t igt_stats_get_min(igt_stats_t *stats)
|
||||
{
|
||||
return stats->min;
|
||||
}
|
||||
|
||||
/**
|
||||
* igt_stats_get_max:
|
||||
* @stats: An #igt_stats_t instance
|
||||
*
|
||||
* Retrieves the maximum value in @stats
|
||||
*/
|
||||
uint64_t igt_stats_get_max(igt_stats_t *stats)
|
||||
{
|
||||
return stats->max;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -41,6 +41,7 @@ typedef struct {
|
||||
unsigned int capacity;
|
||||
unsigned int is_population : 1;
|
||||
unsigned int mean_variance_valid : 1;
|
||||
uint64_t min, max;
|
||||
double mean, variance;
|
||||
} igt_stats_t;
|
||||
|
||||
@ -49,6 +50,8 @@ void igt_stats_fini(igt_stats_t *stats);
|
||||
bool igt_stats_is_population(igt_stats_t *stats);
|
||||
void igt_stats_set_population(igt_stats_t *stats, bool full_population);
|
||||
void igt_stats_push(igt_stats_t *stats, uint64_t value);
|
||||
uint64_t igt_stats_get_min(igt_stats_t *stats);
|
||||
uint64_t igt_stats_get_max(igt_stats_t *stats);
|
||||
double igt_stats_get_mean(igt_stats_t *stats);
|
||||
double igt_stats_get_variance(igt_stats_t *stats);
|
||||
double igt_stats_get_std_deviation(igt_stats_t *stats);
|
||||
|
@ -57,6 +57,17 @@ static void test_init(void)
|
||||
igt_assert(igt_stats_is_population(&stats) == false);
|
||||
}
|
||||
|
||||
static void test_min_max(void)
|
||||
{
|
||||
igt_stats_t stats;
|
||||
|
||||
igt_stats_init(&stats, 5);
|
||||
push_fixture_1(&stats);
|
||||
|
||||
igt_assert(igt_stats_get_min(&stats) == 2);
|
||||
igt_assert(igt_stats_get_max(&stats) == 10);
|
||||
}
|
||||
|
||||
static void test_mean(void)
|
||||
{
|
||||
igt_stats_t stats;
|
||||
@ -127,6 +138,7 @@ igt_simple_main
|
||||
{
|
||||
test_init_zero();
|
||||
test_init();
|
||||
test_min_max();
|
||||
test_mean();
|
||||
test_invalidate_mean();
|
||||
test_std_deviation();
|
||||
|
Loading…
x
Reference in New Issue
Block a user