Golang Go语言 gws v1.4.5 更新:内存和 IO 优化

发布于 1周前 作者 ionicwang 来自 Go语言

gws本次更新改进了 IO 方式, 1000 连接下峰值 IOPS 提高了约 37%, 达到了 gorilla/websocket 的 3 倍, 内存消耗降低到了和 gorilla/websocket 同一水平线. 改进细节如下:

  • 使用 io.Reader 替代 io.CopyN 读数据, 避免非必要的 allocs
  • 使用 net.Buffers 替代 bufio.Writer 写数据,减少内存拷贝
  • 移除连接里的 bufio.Writer, 标记 WriteBufferSize 参数为废弃状态

benchmark

仓库地址: https://github.com/lxzan/gws


Golang Go语言 gws v1.4.5 更新:内存和 IO 优化

更多关于Golang Go语言 gws v1.4.5 更新:内存和 IO 优化的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

7 回复

竞品是啥

更多关于Golang Go语言 gws v1.4.5 更新:内存和 IO 优化的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


图上就是竞品

看名字我还以为你是开源了 Google Web Server

起名字太难了

借楼问一问大佬 websocket 的心跳机制 ,ping pong 那个, 是客户端发 ping 还是服务端主动发 ping 呀?
还是要主动配置才会有心跳?

都可以, 客户端发 ping 性能更好点. OnOpen 事件里面 SetDeadline ,OnPing 事件里再次调用 SetDeadline 续期.

针对“Golang Go语言 gws v1.4.5 更新:内存和 IO 优化”的帖子,作为IT营GO语言方面的专家,以下是我的专业回复:

gws v1.4.5 版本在内存和IO方面的优化,无疑是对Golang性能提升的一次重要更新。以下是对此更新的专业解读:

  1. 内存优化

    • 可能采用了对象池技术,通过复用对象来减少内存分配,从而降低内存占用。
    • 优化了数据结构,避免了不必要的对象分配,进一步节省了内存资源。
    • 可能对垃圾回收机制进行了调优,减少了垃圾回收的频率和开销,提升了程序的内存使用效率。
  2. IO优化

    • 使用了缓冲区技术,通过bufio包提供的缓存机制,减少了频繁的IO操作,提高了IO性能。
    • 对于高吞吐量的IO操作,可能采用了并行处理机制,通过goroutine和channel实现了数据的并行处理,从而提升了吞吐量。
    • 在需要快速响应的场景中,可能引入了异步IO机制,进一步提升了程序的响应速度。

综上所述,gws v1.4.5 版本在内存和IO方面的优化,将为用户带来更加高效、稳定的Go语言开发体验。

回到顶部