package statistics import ( "fmt" "os" "time" ) // An observer, to track reduction performance. type Tracker struct { start time.Time steps uint64 } // Create a new reduction performance tracker. func Track() *Tracker { return &Tracker{} } func (t *Tracker) Start() { t.start = time.Now() t.steps = 0 } func (t *Tracker) Step() { t.steps++ } func (t *Tracker) End() { results := Results{ StepsTaken: t.steps, TimeElapsed: uint64(time.Since(t.start).Milliseconds()), } fmt.Fprint(os.Stderr, results.String()) }