mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-12-21 09:36:34 -05:00
remove large buffer
This commit is contained in:
parent
ac2f62b239
commit
5a32cd8602
@ -206,17 +206,17 @@ func NewBuffer() *Buffer {
|
||||
}
|
||||
|
||||
// NewLargeBuffer creates a Buffer with 64K bytes of arbitrary content.
|
||||
func NewLargeBuffer() *Buffer {
|
||||
return largePool.Allocate()
|
||||
}
|
||||
//func NewLargeBuffer() *Buffer {
|
||||
// return largePool.Allocate()
|
||||
//}
|
||||
|
||||
func NewBufferWithSize(size int) *Buffer {
|
||||
if size <= BufferSize {
|
||||
return NewBuffer()
|
||||
}
|
||||
|
||||
return NewLargeBuffer()
|
||||
}
|
||||
//func NewBufferWithSize(size int) *Buffer {
|
||||
// if size <= BufferSize {
|
||||
// return NewBuffer()
|
||||
// }
|
||||
//
|
||||
// return NewLargeBuffer()
|
||||
//}
|
||||
|
||||
func NewLocalBuffer(size int) *Buffer {
|
||||
return CreateBuffer(make([]byte, size), nil)
|
||||
|
@ -63,7 +63,7 @@ const (
|
||||
|
||||
var (
|
||||
mediumPool *BufferPool
|
||||
largePool *BufferPool
|
||||
//largePool *BufferPool
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -76,6 +76,6 @@ func init() {
|
||||
}
|
||||
}
|
||||
totalByteSize := size * 1024 * 1024
|
||||
mediumPool = NewBufferPool(mediumBufferByteSize, totalByteSize/4*3/mediumBufferByteSize)
|
||||
largePool = NewBufferPool(largeBufferByteSize, totalByteSize/4/largeBufferByteSize)
|
||||
mediumPool = NewBufferPool(mediumBufferByteSize, totalByteSize/mediumBufferByteSize)
|
||||
//largePool = NewBufferPool(largeBufferByteSize, totalByteSize/4/largeBufferByteSize)
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
func TestBufferedReader(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
content := alloc.NewLargeBuffer()
|
||||
content := alloc.NewBuffer()
|
||||
len := content.Len()
|
||||
|
||||
reader := NewBufferedReader(content)
|
||||
@ -31,13 +31,4 @@ func TestBufferedReader(t *testing.T) {
|
||||
assert.Error(err).IsNil()
|
||||
|
||||
assert.Int(content.Len()).Equals(len2)
|
||||
reader.SetCached(false)
|
||||
|
||||
payload2 := alloc.NewBuffer()
|
||||
reader.Read(payload2.Value)
|
||||
|
||||
assert.Int(content.Len()).Equals(len2)
|
||||
|
||||
reader.Read(payload2.Value)
|
||||
assert.Int(content.Len()).LessThan(len2)
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
func TestBufferedWriter(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
content := alloc.NewLargeBuffer().Clear()
|
||||
content := alloc.NewBuffer().Clear()
|
||||
|
||||
writer := NewBufferedWriter(content)
|
||||
assert.Bool(writer.Cached()).IsTrue()
|
||||
|
@ -19,24 +19,28 @@ func NewChainWriter(writer Writer) *ChainWriter {
|
||||
}
|
||||
|
||||
func (this *ChainWriter) Write(payload []byte) (int, error) {
|
||||
if this.writer == nil {
|
||||
return 0, io.ErrClosedPipe
|
||||
}
|
||||
|
||||
size := len(payload)
|
||||
buffer := alloc.NewBufferWithSize(size).Clear()
|
||||
buffer.Append(payload)
|
||||
|
||||
this.Lock()
|
||||
defer this.Unlock()
|
||||
if this.writer == nil {
|
||||
return 0, io.ErrClosedPipe
|
||||
}
|
||||
|
||||
size := len(payload)
|
||||
for size > 0 {
|
||||
buffer := alloc.NewBuffer().Clear()
|
||||
if size > alloc.BufferSize {
|
||||
buffer.Append(payload[:alloc.BufferSize])
|
||||
size -= alloc.BufferSize
|
||||
} else {
|
||||
buffer.Append(payload)
|
||||
size = 0
|
||||
}
|
||||
err := this.writer.Write(buffer)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
|
||||
return size, nil
|
||||
}
|
||||
|
||||
|
@ -38,11 +38,11 @@ func (this *AdaptiveReader) Read() (*alloc.Buffer, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if buffer.Len() >= alloc.BufferSize {
|
||||
this.allocate = alloc.NewLargeBuffer
|
||||
} else {
|
||||
this.allocate = alloc.NewBuffer
|
||||
}
|
||||
//if buffer.Len() >= alloc.BufferSize {
|
||||
// this.allocate = alloc.NewLargeBuffer
|
||||
//} else {
|
||||
// this.allocate = alloc.NewBuffer
|
||||
//}
|
||||
|
||||
return buffer, nil
|
||||
}
|
||||
|
@ -19,9 +19,4 @@ func TestAdaptiveReader(t *testing.T) {
|
||||
assert.Error(err).IsNil()
|
||||
assert.Bool(b1.IsFull()).IsTrue()
|
||||
assert.Int(b1.Len()).Equals(alloc.BufferSize)
|
||||
|
||||
b2, err := reader.Read()
|
||||
assert.Error(err).IsNil()
|
||||
assert.Bool(b2.IsFull()).IsTrue()
|
||||
assert.Int(b2.Len()).Equals(alloc.LargeBufferSize)
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
func TestAdaptiveWriter(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
lb := alloc.NewLargeBuffer()
|
||||
lb := alloc.NewBuffer()
|
||||
rand.Read(lb.Value)
|
||||
|
||||
writeBuffer := make([]byte, 0, 1024*1024)
|
||||
|
@ -12,6 +12,8 @@ import (
|
||||
|
||||
"v2ray.com/core"
|
||||
"v2ray.com/core/common/log"
|
||||
//"net/http"
|
||||
//_ "net/http/pprof"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -94,6 +96,10 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
//go func() {
|
||||
// http.ListenAndServe(":6060", nil)
|
||||
//}()
|
||||
|
||||
if point := startV2Ray(); point != nil {
|
||||
osSignals := make(chan os.Signal, 1)
|
||||
signal.Notify(osSignals, os.Interrupt, os.Kill, syscall.SIGTERM)
|
||||
|
@ -73,7 +73,7 @@ func (this *ChunkReader) Release() {
|
||||
}
|
||||
|
||||
func (this *ChunkReader) Read() (*alloc.Buffer, error) {
|
||||
buffer := alloc.NewLargeBuffer()
|
||||
buffer := alloc.NewBuffer()
|
||||
if _, err := io.ReadFull(this.reader, buffer.Value[:2]); err != nil {
|
||||
buffer.Release()
|
||||
return nil, err
|
||||
|
@ -59,7 +59,7 @@ func TestTCPRequest(t *testing.T) {
|
||||
}
|
||||
|
||||
data := alloc.NewLocalBuffer(256).Clear().AppendString("test string")
|
||||
cache := alloc.NewLargeBuffer().Clear()
|
||||
cache := alloc.NewBuffer().Clear()
|
||||
|
||||
writer, err := WriteTCPRequest(request, cache)
|
||||
assert.Error(err).IsNil()
|
||||
|
@ -60,36 +60,6 @@ func TestLargeIO(t *testing.T) {
|
||||
if writeSize == len(content) {
|
||||
break
|
||||
}
|
||||
|
||||
chunkSize = 8 * 1024
|
||||
if chunkSize+writeSize > len(content) {
|
||||
chunkSize = len(content) - writeSize
|
||||
}
|
||||
writer.Write(alloc.NewLargeBuffer().Clear().Append(content[writeSize : writeSize+chunkSize]))
|
||||
writeSize += chunkSize
|
||||
if writeSize == len(content) {
|
||||
break
|
||||
}
|
||||
|
||||
chunkSize = 63 * 1024
|
||||
if chunkSize+writeSize > len(content) {
|
||||
chunkSize = len(content) - writeSize
|
||||
}
|
||||
writer.Write(alloc.NewLargeBuffer().Clear().Append(content[writeSize : writeSize+chunkSize]))
|
||||
writeSize += chunkSize
|
||||
if writeSize == len(content) {
|
||||
break
|
||||
}
|
||||
|
||||
chunkSize = 64*1024 - 16
|
||||
if chunkSize+writeSize > len(content) {
|
||||
chunkSize = len(content) - writeSize
|
||||
}
|
||||
writer.Write(alloc.NewLargeBuffer().Clear().Append(content[writeSize : writeSize+chunkSize]))
|
||||
writeSize += chunkSize
|
||||
if writeSize == len(content) {
|
||||
break
|
||||
}
|
||||
}
|
||||
writer.Write(alloc.NewBuffer().Clear())
|
||||
writer.Release()
|
||||
|
@ -51,7 +51,7 @@ func (this *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
||||
buffer = this.last
|
||||
this.last = nil
|
||||
} else {
|
||||
buffer = alloc.NewBufferWithSize(4096).Clear()
|
||||
buffer = alloc.NewBuffer().Clear()
|
||||
}
|
||||
|
||||
if this.chunkLength == -1 {
|
||||
@ -97,7 +97,7 @@ func (this *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
||||
}
|
||||
leftLength := buffer.Len() - this.chunkLength
|
||||
if leftLength > 0 {
|
||||
this.last = alloc.NewBufferWithSize(leftLength + 4096).Clear()
|
||||
this.last = alloc.NewBuffer().Clear()
|
||||
this.last.Append(buffer.Value[this.chunkLength:])
|
||||
buffer.Slice(0, this.chunkLength)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user