pickle 協議效能測試

2021-06-08 05:26:15 字數 2223 閱讀 9363

先看文件:

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...

有關效能測試協議選擇問題

長時間不寫文字,就會詞窮,不知道該如何下手。其實深刻反省一下是自己思路不明確或者不夠清晰,所以在工作中還是需要多多鍛鍊自己,事情來了不要盲目的想著先完成任務,而是要弄清楚在下手。做效能時總是會遇到不知道要用什麼樣的協議去錄製指令碼,有時候問開發他們也不懂,像我們不懂開發的 一樣,甚是苦惱。這個時候只...