`

AMF3,JSON,protobuffer

    博客分类:
  • Web
阅读更多

现在流行的WEBGAME中,大都采用FLASH做前段,C++,JAVA或者PHP做的后台,貌似传输的数据格式大都是XML,JSON,AMF3,或者自定义封包的传输方式,最近做了个测试,发现如果用了自定义封包(GOOGLE PROTOCOL BUFFER 以下简称PB)真的能节省不少流量……

 

10ROW的数据(每行数据3列的样子)参考如下

JSON 大概就得用 500多个字节(发送JSON串)

AMF3  用了   64个字节(发送AMF对象)

PB  仅仅32个字节!!!!!!!

xml 我就没测了,我想现在做游戏的,没几个会用它来传输数据吧,后果不堪设想。

 

100ROW的数据时候(一般来说没啥必要测试,没有哪个帅哥会把自己的封包做的那么大的)

JSON 大概就得用 4个TCP包,因为我MINA段设置的TCPBUFFER为1024字节,外加1个70多字节的小包(妈呀)

AMF3 表现出色 也仅用了700多个字节

PB  614个字节

 

看来在大数据量上,PB比AMF的优势不大,其实也可以理解PB的数据包要小,因为前后两端都约定了属性名只用了1

个字节~,问题是在WEBGAME的应用中往往都是些小的TCP包,因此还是强烈推荐使用PB

(以上测试中,PB和AMF均有压缩,JSON没压缩)

 

 

分享到:
评论
2 楼 yeerh 2012-09-07  
客户端如果是FLASH.首推AMF3.

json打成byte[],再压缩.大包还好(100字节以上). 小包压了变大.

pb是好.但不支持动态对象.
1 楼 satuo20 2012-03-08  
本人亲测过,json打成byte[],然后压缩,生成的byte[]比相同条件下的amf3小15个字节左右。在相同条件下,java解析json(用jackson)速度比amf3(采用FB4.6自带的jar包)快2倍多。json将对象生成byte[]比amf3快不止10倍,有时近100倍。请楼主也测下吧。不过protobuffer还真没测,不敢评说。

相关推荐

Global site tag (gtag.js) - Google Analytics