AMF--pyamf 协议性能测试
下面的测试代码是运行在苹果机上,I5处理器,2.3GHz处理的原始数据约为1k。测试一秒钟可以跑多少次AMF3的编码。#! /usr/bin/env python#coding=utf-8import timeimport pyamftest_data = {'baihe': {'name': unicode('百合', 'utf-8'),
·
下面的测试代码是运行在苹果机上,I5处理器,2.3GHz
处理的原始数据约为1k。测试一秒钟可以跑多少次AMF3的编码。
#! /usr/bin/env python
#coding=utf-8
import time
import pyamf
test_data = {
'baihe': {
'name': unicode('百合', 'utf-8'),
'say': unicode('清新,淡雅,花香', 'utf-8'),
'grow_time': 0.5,
'fruit_time': 0.5,
'super_time': 0.5,
'total_time': 1,
'buy':{'gold':2, } ,
'harvest_fruit': 1,
'harvest_super': 1,
'sale': 1,
'level_need': 0,
'experience' : 2,
'exp_fruit': 1,
'exp_super': 1,
'used': True,
},
'1':{
'interval' : 0.3,
'probability' : {
'98': {'chips' : (5, 25), },
'2' : {'gem' : (1,1), },
},
},
'2':{
'unlock' : {'chips':1000, 'FC':10,},
'interval' : 12,
'probability' : {
'70': {'chips' : (120, 250), },
'20': {'gem' : (1,1), },
'10': {'gem' : (2,2), },
},
},
'one':{
'10,5' :{'id':'m01', 'Y':1, 'msg':u'在罐子里发现了一个银币!',},
'3,7' :{'id':'m02', 'Y':10,'msg':u'发现了十个银币!好大一笔钱!',},
'15,5' :{'id':'m03', 'Y':2, 'msg':u'一只老鼠跑了过去',},
'7,4' :{'id':'m04', 'Y':4, 'msg':u'发现了四个生锈的银币……',},
'2,12' :{'id':'m05', 'Y':6, 'msg':u'六个闪亮的银币!',},
},
}
start_time = time.time()
print "start_time:", start_time
j = 1
while True:
j += 1
encoder = pyamf.get_encoder(pyamf.AMF3)
stream = encoder.stream
encoder.writeElement(test_data)
amf_data = stream.getvalue()
data_length = len(amf_data)
end_time = time.time()
if end_time - start_time >= 1 :
break
print "loop_num:", j
print "end_time: ",end_time
print data_length
测试结果如下:
start_time: 1343897700.92
loop_num: 6805
end_time: 1343897701.92
656
可以看出,pyamf编码的效率并不高,单纯从序列化角度讲,cPickle的dumps()在协议1时,效率是pyamf的5倍多。
但是pyamf的压缩比要比pickle.dumps()高出20%以上。
更多推荐
已为社区贡献5条内容
所有评论(0)