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
|
||
|
}
|
||
|
}
|