```
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

feat(socket): 优化TCP连接处理性能

- 添加最小可读长度检查,避免无效Peek操作
- 修复数据部分解析逻辑,避免空切片分配

perf(utils): 优化并发哈希映射性能

- 将分段数量调整为CPU核心数
- 重写Range方法,移除channel和goroutine开销
- 添加原子标志控制遍历终止

perf(utils): 优化结构体序列化缓存机制

- 添加sync.Map缓存预处理结果
- 支持结构体、自定义类型、二进制类型分别缓存
- 减少重复反射
This commit is contained in:
昔念
2026-02-22 10:59:41 +08:00
parent 790bc21034
commit 1dc75b529d
5 changed files with 159 additions and 78 deletions

View File

@@ -192,7 +192,10 @@ func (s *Server) handleTCP(conn gnet.Conn) (action gnet.Action) {
conn.Context().(*player.ClientData).IsCrossDomain.Do(func() { //跨域检测
handle(conn)
})
// 1. 检查最小可读长度(避免无效 Peek
if conn.InboundBuffered() < 17 {
return gnet.None
}
// handle(c)
// 先读取4字节的包长度
lenBuf, err := conn.Peek(4)
@@ -275,10 +278,11 @@ func (s *Server) onevent(c gnet.Conn, v []byte) {
// 解析Result13-16字节
//header.Result = binary.BigEndian.Uint32(v[13:17])
// 解析数据部分17字节之后
header.Data = make([]byte, 0)
// 数据部分:直接引用切片,避免 make
if len(v) > 17 {
header.Data = v[17:]
} else {
header.Data = nil // 避免空切片分配
}
s.workerPool.Submit(func() {