28 lines
511 B
Go
28 lines
511 B
Go
package hrend
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Sum up and average frame times at desired intervals. Average and sum
|
|
// should be seconds
|
|
type FrameTimer struct {
|
|
Sum time.Duration
|
|
TotalTime time.Duration
|
|
Count int
|
|
TotalCount int
|
|
LastAverage time.Duration
|
|
}
|
|
|
|
func (ft *FrameTimer) Add(t time.Duration, avgcount int) {
|
|
ft.Sum += t
|
|
ft.TotalTime += t
|
|
ft.Count += 1
|
|
ft.TotalCount += 1
|
|
if ft.Count%avgcount == 0 {
|
|
ft.LastAverage = ft.Sum / time.Duration(ft.Count)
|
|
ft.Sum = 0
|
|
ft.Count = 0
|
|
}
|
|
}
|