from __future__ import with_statement import pickle import time filename = "pickle.dump" # data = ([0]*10, 2**100, b"abcdef", "xyz") data = [0] * 10 with open(filename, "wb") as f: start = time.time() pickle.dump(data, f) stop = time.time() print("dump: %.1f ms" % ((stop - start)*1000)) print("tell(): %s" % f.tell()) f.write(b"xxx") with open(filename, "rb") as f: start = time.time() data2 = pickle.load(f) stop = time.time() print("load: %.1f ms" % ((stop - start)*1000)) print("tell(): %s" % f.tell()) tail = f.read() print("read()->%r" % tail) # assert data == data2 # trunk: data=10^5: dump=1043ms, load=1511ms # py3k: data=10^5, prefetch=1: dump=24ms, load=186ms # py3k: data=10^5, prefetch=4096: dump=24ms, load=36ms # trunk: data=10^6: dump=11662ms, load=12251ms # py3k: data=10^6, prefetch=1: dump=237ms, load=1830ms # py3k: data=10^6, prefetch=4096: dump=237ms, load=215ms # py3k: data=10^7, prefetch=1: dump=2654ms, load=17003ms # py3k: data=10^7, prefetch=4096: dump=2654ms, load=2451ms # -------------nopatch--------- # version | data | dump ms | load ms | # py3k | 0, 10^6 | 230 | 1500 | # py3k | 1000, 10^6 | 255 | 1780 | # py3k | 0, 10^7 | 2360 | 16044 | # py3k | 1000, 10^7 | 2615 | 19380 | # -------------patch--------- # version | data | dump ms | load ms | # py3k | 0, 10^6 | 237 | 183 | x8 # py3k | 1000, 10^6 | 241 | 248 | x7 # py3k | 0, 10^7 | 2420 | 1860 | x8 # py3k | 1000, 10^7 | 2850 | 3100 | x6