很多普通开发者, 甚至库的作者, 没有意识到 flate
算法内存占用过高的问题, 一个压缩器, 占用内存超过了 640KB !!!
package main
import (
"compress/flate"
"unsafe"
)
func main() {
writer, _ := flate.NewWriter(nil, flate.BestSpeed)
println(unsafe.Sizeof(*writer))
}
// output: 656648
我测试了一下三个 websocket package
, 10000 连接, 开启压缩, 10s 广播一次, 结果如下
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18563 caster 20 0 1340732 225504 4000 S 0.0 5.6 16:15.86 gws-linux-amd64
18542 caster 20 0 1469756 351172 4912 S 0.0 8.8 25:17.99 gorilla-linux-a
30294 caster 20 0 4791548 1.7g 880 S 0.0 44.6 0:07.33 nhooyr-linux-am
nhooyr
降低到开 5000 连接才能正常测试
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.