原先用socket传数据,想对比一下AMF,看了帖子:
Java、PHPRPC、Hessian、Burlap、AMF3、XML 序列化的效率对比,想结合应用都对比一下,就是下载帖子里程序,把进行序列化/反序列化的数据改成项目里要用的。结果如下:
--------------------------------------------------------------------------------
20000次对自定义类型对象
Java - 时间:453|1000 长度:137
PHPRPC - 时间:1266|1250 长度:128
Hessian - 时间:8922|1218 长度:97
Hessian2 - 时间:7312|1000 长度:79
AMF3 不支持该类型
--------------------------------------------------------------------------------
自定义类型对象这个没改,PHPRPC确实很快,Flex里前端actionscript或javascript经常把Object当HashMap用,数据不大用自定义类型,所以测试下HashMap,把前面的自定义类型对象数据按key/value放到Map里,测试发现AMF快:
--------------------------------------------------------------------------------
20000次对Map类型对象
Java - 时间:656|1844 长度:216
PHPRPC - 时间:843|344 长度:87
Hessian - 时间:797|453 长度:62
Hessian2 - 时间:891|343 长度:42
AMF3 - 时间:469|203 长度:45
--------------------------------------------------------------------------------
测试下数据量比较大的,改成2000次,要不时间太长,在HashMap放上股票一天的高开低收和其它数据,把100个HashMap放到List里,Hessian2最快,AMF也还行,
--------------------------------------------------------------------------------
2000次对100条数据对象
Java - 时间:7219|4234 长度:13812
PHPRPC - 时间:12500|4641 长度:14297
Hessian - 时间:3672|6891 长度:14678
Hessian2 - 时间:1922|3703 长度:11183
AMF3 - 时间:3937|1688 长度:5802
--------------------------------------------------------------------------------
200条数据的测试结果和前面差不多:
--------------------------------------------------------------------------------
2000次对200条数据对象
Java - 时间:11422|7812 长度:27502
PHPRPC - 时间:29360|11671 长度:34886
Hessian - 时间:7500|14484 长度:29368
Hessian2 - 时间:2281|7078 长度:22382
AMF3 - 时间:8344|3547 长度:12613
--------------------------------------------------------------------------------
只做10次的结果,AMF不是最快的,但是也不错,选择的话还是考虑应用的并发量
--------------------------------------------------------------------------------
10次对200条数据对象
Java - 时间:62|47 长度:27502
PHPRPC - 时间:171|47 长度:34886
Hessian - 时间:31|78 长度:29368
Hessian2 - 时间:16|31 长度:22382
AMF3 - 时间:47|15 长度:12613
--------------------------------------------------------------------------------
做选择的话还是要根据自己传的数据类型和应用的并发量,另外也大致测试了一下flash反序列化,flash做前面那200条数据反序列化,AMF几十毫秒,Hessian,PHPRPC一百多毫秒,AMF最快,因为它是用C言语在做。当然在前端没有并发,这点时间不算什么。
另外关于支持的语言,Hessian、PHPRPC都是很多的,就不用说了。AMF比较常见的除了java还有php和python。具体好不好用不知道。目前稍稍关心的是C++能不能用,或是借道python,会不会太麻烦;或者像javascript那样借道swf,C++可以调用swf里的方法,就是不知道能不能返回值,哪位高手知道啊?
最后说一下对于股票行情类应用,AMF(blazeds)已经把推数据封装的很方便使用了。