1234567891011121314151617181920212223242526272829303132 |
- package udptransfer
- import (
- "math"
- "testing"
- "time"
- )
- func Test_sleep(t *testing.T) {
- const loops = 10
- var intervals = [...]int64{1, 1e3, 1e4, 1e5, 1e6, 1e7}
- var ret [len(intervals)][loops]int64
- for j := 0; j < len(intervals); j++ {
- v := time.Duration(intervals[j])
- for i := 0; i < loops; i++ {
- t0 := NowNS()
- time.Sleep(v)
- ret[j][i] = NowNS() - t0
- }
- }
- for j := 0; j < len(intervals); j++ {
- var exp, sum, stdev float64
- exp = float64(intervals[j])
- for _, v := range ret[j] {
- sum += float64(v)
- stdev += math.Pow(float64(v)-exp, 2)
- }
- stdev /= float64(loops)
- stdev = math.Sqrt(stdev)
- t.Logf("interval=%s sleeping=%s stdev/k=%.2f", time.Duration(intervals[j]), time.Duration(sum/loops), stdev/1e3)
- }
- }
|