mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-02-20 23:47:21 -05:00
grow buffer size slower
This commit is contained in:
parent
a42a1cba47
commit
4c7c42d39f
@ -18,11 +18,14 @@ func NewBytesToBufferReader(reader io.Reader) Reader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const mediumSize = 8 * 1024
|
||||||
|
const largeSize = 64 * 1024
|
||||||
|
|
||||||
func (r *BytesToBufferReader) readSmall() (MultiBuffer, error) {
|
func (r *BytesToBufferReader) readSmall() (MultiBuffer, error) {
|
||||||
b := New()
|
b := New()
|
||||||
err := b.Reset(ReadFrom(r.Reader))
|
err := b.Reset(ReadFrom(r.Reader))
|
||||||
if b.IsFull() {
|
if b.IsFull() {
|
||||||
r.buffer = make([]byte, 32*1024)
|
r.buffer = make([]byte, mediumSize)
|
||||||
}
|
}
|
||||||
if !b.IsEmpty() {
|
if !b.IsEmpty() {
|
||||||
return NewMultiBufferValue(b), nil
|
return NewMultiBufferValue(b), nil
|
||||||
@ -41,6 +44,9 @@ func (r *BytesToBufferReader) ReadMultiBuffer() (MultiBuffer, error) {
|
|||||||
if nBytes > 0 {
|
if nBytes > 0 {
|
||||||
mb := NewMultiBufferCap(nBytes/Size + 1)
|
mb := NewMultiBufferCap(nBytes/Size + 1)
|
||||||
mb.Write(r.buffer[:nBytes])
|
mb.Write(r.buffer[:nBytes])
|
||||||
|
if nBytes == len(r.buffer) && len(r.buffer) == mediumSize {
|
||||||
|
r.buffer = make([]byte, largeSize)
|
||||||
|
}
|
||||||
return mb, nil
|
return mb, nil
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -21,7 +21,11 @@ func TestAdaptiveReader(t *testing.T) {
|
|||||||
|
|
||||||
b, err = reader.ReadMultiBuffer()
|
b, err = reader.ReadMultiBuffer()
|
||||||
assert(err, IsNil)
|
assert(err, IsNil)
|
||||||
assert(b.Len(), Equals, 32*1024)
|
assert(b.Len(), Equals, 8*1024)
|
||||||
|
|
||||||
|
b, err = reader.ReadMultiBuffer()
|
||||||
|
assert(err, IsNil)
|
||||||
|
assert(b.Len(), Equals, 64*1024)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBytesReaderWriteTo(t *testing.T) {
|
func TestBytesReaderWriteTo(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user