NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
running-stat.h
Go to the documentation of this file.
1#ifndef NDNDPDK_CORE_RUNNING_STAT_H
2#define NDNDPDK_CORE_RUNNING_STAT_H
3
5
6#include "common.h"
7
9typedef struct RunningStat {
10 uint64_t i;
11 uint64_t mask;
12 uint64_t n;
13 double m1;
14 double m2;
16
17__attribute__((nonnull)) static __rte_always_inline bool
18RunningStat_Push_(RunningStat* s, double x) {
19 ++s->i;
20 if (likely((s->i & s->mask) != 0)) {
21 return false;
22 }
23
24 uint64_t n1 = s->n++;
25 double delta = x - s->m1;
26 double deltaN = delta / s->n;
27 s->m1 += deltaN;
28 s->m2 += delta * deltaN * n1;
29 return true;
30}
31
33__attribute__((nonnull)) static inline void
34RunningStat_Push(RunningStat* s, double x) {
35 RunningStat_Push_(s, x);
36}
37
39typedef struct RunningStatI {
41 uint64_t min;
42 uint64_t max;
44
46__attribute__((nonnull)) static inline void
47RunningStatI_Push(RunningStatI* s, uint64_t x) {
48 if (RunningStat_Push_(&s->s, x)) {
49 s->min = RTE_MIN(s->min, x);
50 s->max = RTE_MAX(s->max, x);
51 }
52}
53
54#endif // NDNDPDK_CORE_RUNNING_STAT_H
Facility to compute mean and variance, with integer min and max.
Definition running-stat.h:39
uint64_t min
Definition running-stat.h:41
RunningStat s
Definition running-stat.h:40
uint64_t max
Definition running-stat.h:42
Facility to compute mean and variance.
Definition running-stat.h:9
uint64_t i
count of incoming inputs
Definition running-stat.h:10
double m2
Definition running-stat.h:14
uint64_t n
count of taken samples
Definition running-stat.h:12
double m1
Definition running-stat.h:13
uint64_t mask
take sample only if (i & mask) == 0
Definition running-stat.h:11