小编Lee*_*Lee的帖子

为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

我正在测试 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)

python python-3.x

6
推荐指数
1
解决办法
796
查看次数

标签 统计

python ×1

python-3.x ×1