update bufpool

This commit is contained in:
ginuerzh
2023-10-19 23:48:23 +08:00
parent f08c814602
commit d354cf2539
3 changed files with 19 additions and 20 deletions

View File

@ -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)
} }
} }

View File

@ -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

View File

@ -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)
} }
} }