update bufpool
This commit is contained in:
@ -14,7 +14,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 128)
|
b := make([]byte, 128)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -23,7 +23,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 512)
|
b := make([]byte, 512)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -32,7 +32,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 1024)
|
b := make([]byte, 1024)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -41,7 +41,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 2048)
|
b := make([]byte, 2048)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -50,7 +50,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 4096)
|
b := make([]byte, 4096)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -59,7 +59,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 8192)
|
b := make([]byte, 8192)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -68,7 +68,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 16*1024)
|
b := make([]byte, 16*1024)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -77,7 +77,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 32*1024)
|
b := make([]byte, 32*1024)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -86,7 +86,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 64*1024)
|
b := make([]byte, 64*1024)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -95,7 +95,7 @@ var (
|
|||||||
pool: sync.Pool{
|
pool: sync.Pool{
|
||||||
New: func() any {
|
New: func() any {
|
||||||
b := make([]byte, 65*1024)
|
b := make([]byte, 65*1024)
|
||||||
return &b
|
return b
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -103,21 +103,20 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Get returns a buffer of specified size.
|
// Get returns a buffer of specified size.
|
||||||
func Get(size int) *[]byte {
|
func Get(size int) []byte {
|
||||||
for i := range pools {
|
for i := range pools {
|
||||||
if size <= pools[i].size {
|
if size <= pools[i].size {
|
||||||
b := pools[i].pool.Get().(*[]byte)
|
b := pools[i].pool.Get().([]byte)
|
||||||
*b = (*b)[:size]
|
return b[:size]
|
||||||
return b
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b := make([]byte, size)
|
b := make([]byte, size)
|
||||||
return &b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
func Put(b *[]byte) {
|
func Put(b []byte) {
|
||||||
for i := range pools {
|
for i := range pools {
|
||||||
if cap(*b) == pools[i].size {
|
if cap(b) == pools[i].size {
|
||||||
pools[i].pool.Put(b)
|
pools[i].pool.Put(b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ func (c *conn) ReadFrom(b []byte) (n int, addr net.Addr, err error) {
|
|||||||
case bb := <-c.rc:
|
case bb := <-c.rc:
|
||||||
n = copy(b, bb)
|
n = copy(b, bb)
|
||||||
c.SetIdle(false)
|
c.SetIdle(false)
|
||||||
bufpool.Put(&bb)
|
bufpool.Put(bb)
|
||||||
|
|
||||||
case <-c.closed:
|
case <-c.closed:
|
||||||
err = net.ErrClosed
|
err = net.ErrClosed
|
||||||
|
@ -69,7 +69,7 @@ func (ln *listener) listenLoop() {
|
|||||||
|
|
||||||
b := bufpool.Get(ln.config.ReadBufferSize)
|
b := bufpool.Get(ln.config.ReadBufferSize)
|
||||||
|
|
||||||
n, raddr, err := ln.conn.ReadFrom(*b)
|
n, raddr, err := ln.conn.ReadFrom(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ln.errChan <- err
|
ln.errChan <- err
|
||||||
close(ln.errChan)
|
close(ln.errChan)
|
||||||
@ -82,7 +82,7 @@ func (ln *listener) listenLoop() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := c.WriteQueue((*b)[:n]); err != nil {
|
if err := c.WriteQueue(b[:n]); err != nil {
|
||||||
ln.config.Logger.Warn("data discarded: ", err)
|
ln.config.Logger.Warn("data discarded: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user