NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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 
6 #include "common.h"
7 
9 typedef 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
18 RunningStat_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
34 RunningStat_Push(RunningStat* s, double x) {
35  RunningStat_Push_(s, x);
36 }
37 
39 typedef struct RunningStatI {
41  uint64_t min;
42  uint64_t max;
44 
46 __attribute__((nonnull)) static inline void
47 RunningStatI_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
struct RunningStat RunningStat
Facility to compute mean and variance.
struct RunningStatI RunningStatI
Facility to compute mean and variance, with integer min and max.
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