mirror of https://github.com/v2ray/v2ray-core
benchmark pipe
parent
27772a75a7
commit
b41513f644
|
@ -120,7 +120,12 @@ func (p *pipe) writeMultiBufferInternal(mb buf.MultiBuffer) error {
|
|||
return err
|
||||
}
|
||||
|
||||
p.data, _ = buf.MergeMulti(p.data, mb)
|
||||
if p.data == nil {
|
||||
p.data = mb
|
||||
} else {
|
||||
p.data, _ = buf.MergeMulti(p.data, mb)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"v2ray.com/core/common"
|
||||
"v2ray.com/core/common/buf"
|
||||
"v2ray.com/core/common/task"
|
||||
. "v2ray.com/core/transport/pipe"
|
||||
|
@ -125,3 +126,18 @@ func TestInterfaces(t *testing.T) {
|
|||
assert((*Reader)(nil), Implements, (*buf.Reader)(nil))
|
||||
assert((*Reader)(nil), Implements, (*buf.TimeoutReader)(nil))
|
||||
}
|
||||
|
||||
func BenchmarkPipeReadWrite(b *testing.B) {
|
||||
reader, writer := New(WithoutSizeLimit())
|
||||
a := buf.New()
|
||||
a.Extend(buf.Size)
|
||||
c := buf.MultiBuffer{a}
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
common.Must(writer.WriteMultiBuffer(c))
|
||||
d, err := reader.ReadMultiBuffer()
|
||||
common.Must(err)
|
||||
c = d
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue