gaio
gaio copied to clipboard
allows WaitIO() to reuse the []OpResult slice
每次调用WaitIO()
都会新创建一个[]OpResult
小对象,对性能造成一定影响;这个PR修改了WaitIO()
的接口,允许用户传入一个预先分配好的slice,从而避免每次重新创建。
buf := make([]gaio.OpResult, 0, 100)
for {
results, err := w.WaitIO(buf)
...
}
甚至用户可以直接重用返回的slice
buf := make([]gaio.OpResult, 0, 100)
for {
results, err := w.WaitIO(buf)
for _, r := range results {
// ...
}
buf = results[:0]
}
this makes the interface compatible
是的,不过修复起来也足够简单,加个 nil 就跟原来一样了;要么加一个 WaitIO2() ,一样很恶心;或者就不动了,留一个性能污点。