|  | 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)) | 
        
          |  |  |