Тест такой:
# -*- coding: utf-8 -*-
#!/usr/bin/python
import cPickle as pickle
#import pickle
from random import random
from timeit import Timer
def test_case1(N):
d = {}
for i in range(0, N):
d.update({i: random()})
def test_case2(N):
d = {}
for i in range(0, N):
d.update({i: random()})
d = pickle.loads(pickle.dumps(d))
N = 100
print u'словарь на %d элементов, без pickle' % N
print (Timer("test_case1(%d)" % N, "from __main__ import test_case1").timeit(20))
print u'словарь на %d элементов, pickle.dumps/pickle.loads' % N
print (Timer("test_case2(%d)" % N, "from __main__ import test_case2").timeit(20))
без pickle
словарь на 100 элементов
0.00234794616699
словарь на 1000 элементов
0.0490698814392
словарь на 100000 элементов
2.56784296036
python pickle, pickle.dumps/pickle.loads
словарь на 100 элементов,
0.0462000370026
словарь на 1000 элементов
0.449135065079
словарь на 100000 элементов
44.5989050865
cPickle
словарь на 100 элементов, pickle.dumps/pickle.loads
0.00978302955627
словарь на 1000 элементов, pickle.dumps/pickle.loads
0.0971109867096
словарь на 100000 элементов, pickle.dumps/pickle.loads
9.78903698921