Skip to content

Instantly share code, notes, and snippets.

@msztolcman
Created February 22, 2013 20:49
Show Gist options
  • Save msztolcman/5016446 to your computer and use it in GitHub Desktop.
Save msztolcman/5016446 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python -tt
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
import os, os.path
import sys
import re
from pprint import pprint, pformat
import json
import msgpack
import bson
import timeit
'''
RESULTS:
msgpack encode (small): 0.0483169555664
json encode (small): 0.10213303566
bson encode (small): 0.499367952347
msgpack encode (medium): 0.147785902023
json encode (medium): 0.449557065964
bson encode (medium): 34.7632789612
msgpack encode (big): 20.4390101433
json encode (big): 93.5156259537
bson encode (big): break after 2hours (over 120 minutes, over 7200 seconds!!!)
msgpack decode (small): 0.0538630485535
json decode (small): 0.102321147919
bson decode (small): 0.163924217224
msgpack decode (medium): 0.0964729785919
json decode (medium): 0.645384073257
bson decode (medium): 18.448543787
msgpack decode (big): 12.0216510296
json decode (big): 125.521572113
bson decode (big): break after 10 minutes (600s!!!)
small msgpack size: 7
small json size: 16
small bson size: 19
medium msgpack size: 251
medium json size: 770
medium bson size: 1585
big msgpack size: 53103
big json size: 192140
big bson size: 398965
'''
SS = {
'a': 1,
'b': 2,
}
def tjson_e_s ():
return json.dumps (SS)
def tmsgpack_e_s ():
return msgpack.packb (SS)
def tbson_e_s ():
return bson.dumps (SS)
SM = {}
for i in range (10):
k = chr (i+70)
SM[k] = [ j for j in range (20) ]
# print (SM)
# sys.exit ()
def tjson_e_m ():
return json.dumps (SM)
def tmsgpack_e_m ():
return msgpack.packb (SM)
def tbson_e_m ():
return bson.dumps (SM)
SB = {}
for i in range (20):
w = chr (i+70)
SB[w] = [ [ k for k in range (50) ] for j in range (50) ]
# print (SB)
# sys.exit ()
def tjson_e_b ():
return json.dumps (SB)
def tmsgpack_e_b ():
return msgpack.packb (SB)
def tbson_e_b ():
return bson.dumps (SB)
print ('msgpack encode (small):', timeit.timeit (tmsgpack_e_s, number=10000))
print ('json encode (small):', timeit.timeit (tjson_e_s, number=10000))
print ('bson encode (small):', timeit.timeit (tbson_e_s, number=10000))
print ()
print ('msgpack encode (medium):', timeit.timeit (tmsgpack_e_m, number=10000))
print ('json encode (medium):', timeit.timeit (tjson_e_m, number=10000))
print ('bson encode (medium):', timeit.timeit (tbson_e_m, number=10000))
print ()
print ('msgpack encode (big):', timeit.timeit (tmsgpack_e_b, number=10000))
print ('json encode (big):', timeit.timeit (tjson_e_b, number=10000))
print ('bson encode (big):', timeit.timeit (tbson_e_b, number=10000))
print ()
SSJ = json.dumps (SS)
def tjson_d_s ():
return json.loads (SSJ)
SSM = msgpack.packb (SS)
def tmsgpack_d_s ():
return msgpack.unpackb (SSM)
SSB = bson.dumps (SS)
def tbson_d_s ():
return bson.loads (SSB)
SMJ = json.dumps (SM)
def tjson_d_m ():
return json.loads (SMJ)
SMM = msgpack.packb (SM)
def tmsgpack_d_m ():
return msgpack.unpackb (SMM)
SMB = bson.dumps (SM)
def tbson_d_m ():
return bson.loads (SMB)
SBJ = json.dumps (SB)
def tjson_d_b ():
return json.loads (SBJ)
SBM = msgpack.packb (SB)
def tmsgpack_d_b ():
return msgpack.unpackb (SBM)
SBB = bson.dumps (SB)
def tbson_d_b ():
return bson.loads (SBB)
print ('msgpack decode (small):', timeit.timeit (tmsgpack_d_s, number=10000))
print ('json decode (small):', timeit.timeit (tjson_d_s, number=10000))
print ('bson decode (small):', timeit.timeit (tbson_d_s, number=10000))
print ()
print ('msgpack decode (medium):', timeit.timeit (tmsgpack_d_m, number=10000))
print ('json decode (medium):', timeit.timeit (tjson_d_m, number=10000))
print ('bson decode (medium):', timeit.timeit (tbson_d_m, number=10000))
print ()
print ('msgpack decode (big):', timeit.timeit (tmsgpack_d_b, number=10000))
print ('json decode (big):', timeit.timeit (tjson_d_b, number=10000))
print ('bson decode (big):', timeit.timeit (tbson_d_b, number=10000))
print ()
print ('small msgpack size:', len (tmsgpack_e_s ()))
print ('small json size:', len (tjson_e_s ()))
print ('small bson size:', len (tbson_e_s ()))
print ('medium msgpack size:', len (tmsgpack_e_m ()))
print ('medium json size:', len (tjson_e_m ()))
print ('medium bson size:', len (tbson_e_m ()))
print ('big msgpack size:', len (tmsgpack_e_b ()))
print ('big json size:', len (tjson_e_b ()))
print ('big bson size:', len (tbson_e_b ()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment