我正在测试 Python 3.4,我注意到 pickle 模块有一个新协议。因此,我对 2 个协议进行了基准测试。
def test1():
pickle3=open("pickle3","wb")
for i in range(1000000):
pickle.dump(i,pickle3,3)
pickle3.close()
pickle3=open("pickle3","rb")
for i in range(1000000):
pickle.load(pickle3)
def test2():
pickle4=open("pickle4","wb")
for i in range(1000000):
pickle.dump(i, pickle4,4)
pickle3.close()
pickle4=open("pickle4","rb")
for i in range(1000000):
pickle.load(pickle4)
Run Code Online (Sandbox Code Playgroud)
test1 标记:6.473 秒内调用 2000007 次函数
test2 标记:6.740 秒内调用 2000007 次函数
协议4比协议3稍微慢一些。这种差异可以忽略不计。然而,硬盘的使用情况确实不同。
pickle3 使用 7,868,672 字节。
pickle4 使用 16,868,672 字节。
那没有理由。我继续挖掘。读完PEP3154后,我大致了解了该协议。
对于协议 3 的元组(1,2,3,4,5,6,7)
0: \x80 PROTO 3
2: ( MARK
3: K BININT1 1
5: K BININT1 2
7: K …Run Code Online (Sandbox Code Playgroud)