33 lines
572 B
Go
33 lines
572 B
Go
package internal
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
const runningTime = 3 * time.Second
|
|
|
|
// SingleThreadTester 单线程测试f在固定时间内执行次数。返回执行函数f的次数和时间
|
|
func SingleThreadTester(f func()) (int, time.Duration) {
|
|
var start, end time.Time
|
|
var count int
|
|
|
|
timer := time.NewTimer(runningTime)
|
|
start = time.Now()
|
|
loop:
|
|
for {
|
|
select {
|
|
case <-timer.C:
|
|
end = time.Now()
|
|
break loop
|
|
default:
|
|
f()
|
|
count++
|
|
}
|
|
}
|
|
return count, end.Sub(start)
|
|
}
|
|
|
|
func Rate(count int, d time.Duration) float64 {
|
|
return float64(count) / d.Seconds()
|
|
}
|