aboutsummaryrefslogtreecommitdiff
path: root/go/stats/duration_counter.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/stats/duration_counter.go')
-rw-r--r--go/stats/duration_counter.go94
1 files changed, 0 insertions, 94 deletions
diff --git a/go/stats/duration_counter.go b/go/stats/duration_counter.go
deleted file mode 100644
index 69c8be61d..000000000
--- a/go/stats/duration_counter.go
+++ /dev/null
@@ -1,94 +0,0 @@
-package stats
-
-import (
- "time"
-)
-
-type TimedValue struct {
- t time.Time
- val int64
-}
-
-func NewTimedValue(t time.Time, val int64) *TimedValue {
- return &TimedValue{t: t, val: val}
-}
-
-type RoundRobinCounter struct {
- LastIndex int
- Values []int64
- Counts []int64
-}
-
-func NewRoundRobinCounter(slots int) *RoundRobinCounter {
- return &RoundRobinCounter{LastIndex: -1, Values: make([]int64, slots), Counts: make([]int64, slots)}
-}
-func (rrc *RoundRobinCounter) Add(index int, val int64) {
- if index >= len(rrc.Values) {
- return
- }
- for rrc.LastIndex != index {
- rrc.LastIndex = (rrc.LastIndex + 1) % len(rrc.Values)
- rrc.Values[rrc.LastIndex] = 0
- rrc.Counts[rrc.LastIndex] = 0
- }
- rrc.Values[index] += val
- rrc.Counts[index]++
-}
-func (rrc *RoundRobinCounter) Max() (max int64) {
- for _, val := range rrc.Values {
- if max < val {
- max = val
- }
- }
- return
-}
-func (rrc *RoundRobinCounter) Count() (cnt int64) {
- for _, c := range rrc.Counts {
- cnt += c
- }
- return
-}
-func (rrc *RoundRobinCounter) Sum() (sum int64) {
- for _, val := range rrc.Values {
- sum += val
- }
- return
-}
-
-func (rrc *RoundRobinCounter) ToList() (ret []int64) {
- index := rrc.LastIndex
- step := len(rrc.Values)
- for step > 0 {
- step--
- index++
- if index >= len(rrc.Values) {
- index = 0
- }
- ret = append(ret, rrc.Values[index])
- }
- return
-}
-
-type DurationCounter struct {
- MinuteCounter *RoundRobinCounter
- HourCounter *RoundRobinCounter
- DayCounter *RoundRobinCounter
- WeekCounter *RoundRobinCounter
-}
-
-func NewDurationCounter() *DurationCounter {
- return &DurationCounter{
- MinuteCounter: NewRoundRobinCounter(60),
- HourCounter: NewRoundRobinCounter(60),
- DayCounter: NewRoundRobinCounter(24),
- WeekCounter: NewRoundRobinCounter(7),
- }
-}
-
-// Add is for cumulative counts
-func (sc *DurationCounter) Add(tv *TimedValue) {
- sc.MinuteCounter.Add(tv.t.Second(), tv.val)
- sc.HourCounter.Add(tv.t.Minute(), tv.val)
- sc.DayCounter.Add(tv.t.Hour(), tv.val)
- sc.WeekCounter.Add(int(tv.t.Weekday()), tv.val)
-}