mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
backend: reuse timer in run().
Benchmarks: ``` import ( "testing" "time" ) func BenchmarkTimeAfter(b *testing.B) { b.ReportAllocs() for n := 0; n < b.N; n++ { select { case <- time.After(1 * time.Millisecond): } } } func BenchmarkTimerReset(b *testing.B) { b.ReportAllocs() t := time.NewTimer(1 * time.Millisecond) for n := 0; n < b.N; n++ { select { case <- t.C: } t.Reset(1 * time.Millisecond) } } ``` Running reveals that each loop results in 3 allocs: ``` BenchmarkTimeAfter-4 2000 1112134 ns/op 192 B/op 3 allocs/op BenchmarkTimerReset-4 2000 1109774 ns/op 0 B/op 0 allocs/op ```
This commit is contained in:
parent
b945a3fcc8
commit
dbc7c2cf4e
@ -179,15 +179,17 @@ func (b *backend) Size() int64 {
|
||||
|
||||
func (b *backend) run() {
|
||||
defer close(b.donec)
|
||||
|
||||
t := time.NewTimer(b.batchInterval)
|
||||
defer t.Stop()
|
||||
for {
|
||||
select {
|
||||
case <-time.After(b.batchInterval):
|
||||
case <-t.C:
|
||||
case <-b.stopc:
|
||||
b.batchTx.CommitAndStop()
|
||||
return
|
||||
}
|
||||
b.batchTx.Commit()
|
||||
t.Reset(b.batchInterval)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user