先看文件:
pickle.
dumps
(obj
[, protocol])
¶return the pickled representation of the object as a string, instead of writing it to a file.
if the protocol parameter is omitted, protocol 0 is used. if protocol is specified as a negative value orhighest_protocol
, the highest protocol version will be used.
changed in version 2.3: the protocol parameter was added.
這裡使用的是cpickle做測試,首先看一下dumps() 函式的預設協議,也就是引數0執行的情況:
測試**如下:
#! /usr/bin/env python
#coding=utf-8
import time
import cpickle as pickle
test_data = ,
'harvest_fruit': 1,
'harvest_super': 1,
'sale': 1,
'level_need': 0,
'experience' : 2,
'exp_fruit': 1,
'exp_super': 1,
'used': true,
},'1':,
'2' : ,
},},
'2':,
'interval' : 12,
'probability' : ,
'20': ,
'10': ,
},},
'one':,
'3,7' :,
'15,5' :,
'7,4' :,
'2,12' :,
},
}start_time = time.time()
print "start_time:", start_time
j = 1
while true:
j += 1
# 分別使用預設--也就是協議引數為0,和可選的1,2進行測試,如pickle.dumps(test_data, 1)
data = pickle.dumps(test_data)
data_length = len(data)
end_time = time.time()
if end_time - start_time >= 1 :
break
print "loop_num:", j
print "end_time: ",end_time
print data_length
預設的dump()測試結果:
start_time: 1343873550.62
loop_num: 13260
end_time: 1343873551.62
1377
再把協議調整成為1,測試結果:
start_time: 1343873648.89
loop_num: 34514
end_time: 1343873649.89
868
可以看到,執行效率約為協議0的2.6倍,生成的bit數是協議0的60%。
再把協議換成協議2,測試結果:
start_time: 1343874146.49
loop_num: 35254
end_time: 1343874147.49
862
可以看到,使用協議2,無論在執行效率、壓縮效率上,比起協議1來都提高不大。
總結:
如果使用pickle的dumps函式的話,從效能和壓縮比考慮,應該使用協議1或者協議2。
pickle的dumps()預設使用協議0,是為了向python2.3之前的版本相容。如果使用協議3,資料將只能用於python3。
AMF pyamf 協議效能測試
下面的測試 是執行在蘋果機上,i5處理器,2.3ghz 處理的原始資料約為1k。測試一秒鐘可以跑多少次amf3的編碼。usr bin env python coding utf 8 import time import pyamf test data harvest fruit 1,harvest ...
效能測試之協議分析
最近在論壇上的一些朋友問指令碼方面的問題,比如用lr的winsock協議錄製的指令碼遇回放過程中遇到如下錯誤 action.c 20 error callconnect can t assign requested address.error code 10049.action.c 20 error...
有關效能測試協議選擇問題
長時間不寫文字,就會詞窮,不知道該如何下手。其實深刻反省一下是自己思路不明確或者不夠清晰,所以在工作中還是需要多多鍛鍊自己,事情來了不要盲目的想著先完成任務,而是要弄清楚在下手。做效能時總是會遇到不知道要用什麼樣的協議去錄製指令碼,有時候問開發他們也不懂,像我們不懂開發的 一樣,甚是苦惱。這個時候只...