之前对quicklz算法有一定了解,知道其对单个消息包压缩比几乎没有甚至为负值(之前未测试,只是理论猜测), 故采用聚集压缩(N个消息的字节流的某一部分压缩),这样可有效减少压缩函数的调用次数,减少开销。
今天给as3搞了个客户端网络库,调试的时候验证了以前的猜测(其对单个消息包压缩比几乎没有甚至为负值),样本数据很简单,几乎无重复的字符串,大概1K多,少了几十字节。 若一个服3K人,用一个网关,一个连接发往客户端1s发3次(一次若干消息), 这样算来,相当于1K连接,每帧都要压缩一次。 算是平均开销。 若往客户端发送的消息很多,那么会出现需要压缩若干次,也就是说若干次函数调用,不过这个情况比较少,平均来讲,CPU 开销以及带宽减少产生的收益还是比较诱人的。测试过zlib,他的压缩比很理想,但是CPU开销很高。而quicklz 都适中吧。平衡的把握很纠结。。。