mirror of
https://github.com/bjdgyc/anylink.git
synced 2025-08-08 13:40:55 +08:00
优化gc性能
This commit is contained in:
52
server/handler/pool.go
Normal file
52
server/handler/pool.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/bjdgyc/anylink/sessdata"
|
||||
)
|
||||
|
||||
var plPool = sync.Pool{
|
||||
New: func() interface{} {
|
||||
pl := sessdata.Payload{
|
||||
Data: make([]byte, 0, BufferSize),
|
||||
}
|
||||
// fmt.Println("plPool-init", len(pl.Data), cap(pl.Data))
|
||||
return &pl
|
||||
},
|
||||
}
|
||||
|
||||
func getPayload() *sessdata.Payload {
|
||||
pl := plPool.Get().(*sessdata.Payload)
|
||||
return pl
|
||||
}
|
||||
|
||||
func putPayload(pl *sessdata.Payload) {
|
||||
pl.LType = 0
|
||||
pl.PType = 0
|
||||
pl.Data = pl.Data[:0]
|
||||
plPool.Put(pl)
|
||||
}
|
||||
|
||||
var bytePool = sync.Pool{
|
||||
New: func() interface{} {
|
||||
b := make([]byte, 0, BufferSize)
|
||||
// fmt.Println("bytePool-init")
|
||||
return b
|
||||
},
|
||||
}
|
||||
|
||||
func getByteZero() []byte {
|
||||
b := bytePool.Get().([]byte)
|
||||
return b
|
||||
}
|
||||
|
||||
func getByteFull() []byte {
|
||||
b := bytePool.Get().([]byte)
|
||||
b = b[:BufferSize]
|
||||
return b
|
||||
}
|
||||
func putByte(b []byte) {
|
||||
b = b[:0]
|
||||
bytePool.Put(b)
|
||||
}
|
Reference in New Issue
Block a user