|
import cPickle |
|
import pickle |
|
import json |
|
import random |
|
from time import time |
|
from hashlib import md5 |
|
|
|
test_runs = 1000 |
|
|
|
def float_list(): |
|
n = 1000 |
|
d = [] |
|
for i in range(n): |
|
d.append(random.randrange(0, 99) + random.random()) |
|
return d |
|
|
|
def int_list(): |
|
n = 1000 |
|
d = [] |
|
for i in range(n): |
|
d.append(random.randrange(0, 9999)) |
|
return d |
|
|
|
def str_list(): |
|
n = 1000 |
|
d = [] |
|
for i in range(n): |
|
d.append(md5(str(random.random())).hexdigest()) |
|
return d |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
payload = { |
|
"float": float_list(), |
|
"int": int_list(), |
|
"str": str_list() |
|
} |
|
|
|
for payload_type in payload: |
|
|
|
data = payload[payload_type] |
|
|
|
start = time() |
|
for i in range(test_runs): |
|
serialized = json.dumps(data) |
|
duration = time() - start |
|
print("json,serialize,%s,%.3f" % (payload_type, duration)) |
|
|
|
start = time() |
|
for i in range(test_runs): |
|
unserialized = json.loads(serialized) |
|
duration = time() - start |
|
print("json,unserialize,%s,%.3f" % (payload_type, duration)) |
|
|
|
start = time() |
|
for i in range(test_runs): |
|
serialized = pickle.dumps(data) |
|
duration = time() - start |
|
print("pickle,serialize,%s,%.3f" % (payload_type, duration)) |
|
|
|
start = time() |
|
for i in range(test_runs): |
|
unserialized = pickle.loads(serialized) |
|
duration = time() - start |
|
print("pickle,unserialize,%s,%.3f" % (payload_type, duration)) |
|
|
|
start = time() |
|
for i in range(test_runs): |
|
serialized = cPickle.dumps(data) |
|
duration = time() - start |
|
print("cPickle,serialize,%s,%.3f" % (payload_type, duration)) |
|
|
|
start = time() |
|
for i in range(test_runs): |
|
unserialized = cPickle.loads(serialized) |
|
duration = time() - start |
|
print("cPickle,unserialize,%s,%.3f" % (payload_type, duration)) |
|
|
Hi. I've forked, shortened, and added marshal and highest pickle protocol setting to your code.