Help us shape the future of Go! Take the 2026 Go Developer Survey

ratecounter

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 19, 2015 License: MIT Imports: 3 Imported by: 276

README

ratecounter

A Thread-Safe RateCounter implementation in Golang

Usage

import "github.com/paulbellamy/ratecounter"

Package ratecounter provides a thread-safe rate-counter, for tracking counts in an interval

Useful for implementing counters and stats of 'requests-per-second' (for example).

// We're recording marks-per-1second
counter := ratecounter.NewRateCounter(1 * time.Second)
// Record an event happening
counter.Incr(1)
// get the current requests-per-second
counter.Rate()

To record an average over a longer period, you can:

// Record requests-per-minute
counter := ratecounter.NewRateCounter(60 * time.Second)
// Calculate the average requests-per-second for the last minute
counter.Rate() / 60

Documentation

type Counter struct {
    // contains filtered or unexported fields
}
    A Counter is a thread-safe counter implementation

func NewCounter() *Counter
    NewCounter is used to construct a new Counter object

func (c *Counter) Incr(val int64)
    Increment the counter by some value

func (c *Counter) Value() int64
    Return the counter's current value

type RateCounter struct {
    // contains filtered or unexported fields
}
    A RateCounter is a thread-safe counter which returns the number of times
    'Mark' has been called in the last interval

func NewRateCounter(intrvl time.Duration) *RateCounter
    Constructs a new RateCounter, for the interval provided

func (r *RateCounter) Mark()
    Add 1 event into the RateCounter

func (r *RateCounter) Rate() int64
    Return the current number of events in the last interval

Documentation

Overview

Package ratecounter provides a thread-safe rate-counter, for tracking counts in an interval

Useful for implementing counters and stats of 'requests-per-second' (for example).

// We're recording marks-per-1second
counter := ratecounter.NewRateCounter(1 * time.Second)

// Record an event happening
counter.Mark()

// get the current requests-per-second
counter.Rate()

To record an average over a longer period, you can:

// Record requests-per-minute
counter := ratecounter.NewRateCounter(60 * time.Second)

// Calculate the average requests-per-second for the last minute
counter.Rate() / 60

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Counter

type Counter int64

A Counter is a thread-safe counter implementation

func (*Counter) Incr

func (c *Counter) Incr(val int64)

Increment the counter by some value

func (*Counter) Value

func (c *Counter) Value() int64

Return the counter's current value

type RateCounter

type RateCounter struct {
	// contains filtered or unexported fields
}

A RateCounter is a thread-safe counter which returns the number of times 'Incr' has been called in the last interval

func NewRateCounter

func NewRateCounter(intrvl time.Duration) *RateCounter

Constructs a new RateCounter, for the interval provided

func (*RateCounter) Incr

func (r *RateCounter) Incr(val int64)

Add an event into the RateCounter

func (*RateCounter) Rate

func (r *RateCounter) Rate() int64

Return the current number of events in the last interval

func (*RateCounter) String

func (r *RateCounter) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL