wojtekwanczyk / average

A sliding time window for Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

average TravisCI Go Report Card GoDoc

This stupidly named Go package contains a single struct that is used to implement counters on a sliding time window.

Usage

import (
    "fmt"

    "github.com/prep/average"
)

func main() {
    // Create a SlidingWindow that has a window of 15 minutes, with a
    // granularity of 1 minute.
    sw := average.MustNew(15*time.Second, time.Second)
    defer sw.Stop()

    sw.Add(15)
    // Do some more work.
    time.Sleep(time.Second)
    sw.Add(22)
    // Do even more work.
    time.Sleep(2 * time.Second)
    sw.Add(22)

    fmt.Printf("Average of last 1s: %f\n", sw.Average(time.Second))
    fmt.Printf("Average of last 2s: %f\n", sw.Average(2*time.Second))
    fmt.Printf("Average of last 15s: %f\n\n", sw.Average(15*time.Second))

    total, numSamples := sw.Total(15 * time.Second)
    fmt.Printf("Counter has a total of %d over %d samples\n", total, numSamples)
}

License

This software is created for MessageBird B.V. and distributed under the BSD-style license found in the LICENSE file.

About

A sliding time window for Go

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Go 100.0%