Skip to content

Instantly share code, notes, and snippets.

@mylokin
Created March 4, 2012 17:19
Show Gist options
  • Save mylokin/1973968 to your computer and use it in GitHub Desktop.
Save mylokin/1973968 to your computer and use it in GitHub Desktop.
Testing performance of json, anyjson, cjson, simplejson
import anyjson
import cjson
import json
import simplejson
import time
anyjson.dumps = anyjson.serialize
anyjson.loads = anyjson.deserialize
cjson.dumps = cjson.encode
cjson.loads = cjson.decode
def duration(func, repeat=100000):
def wrapper(*args, **kwargs):
total_time = 0
for r in xrange(repeat):
start_time = time.time()
try:
func(*args, **kwargs)
finally:
total_time += (time.time() - start_time)
return total_time, (total_time / float(repeat))
return wrapper
def profile_encode(json, data):
json.dumps(data)
def profile_decode(json, data):
json.loads(data)
data = {
'data': 'some info',
'Vestibulum eget pellentesque tellus. Suspendisse in eros diam, ut ullamcorper metus. Nulla aliquet, diam eu ornare venenatis, metus justo porttitor enim, eget ultrices orci est porta dolor. Etiam id pretium nulla. Quisque luctus nunc eu tellus sodales scelerisque. Suspendisse ultricies congue feugiat. Donec facilisis quam id nibh accumsan accumsan. Cras id lectus ut quam bibendum scelerisque. Proin ultrices sem nec eros sollicitudin imperdiet. Aliquam quis est dolor, mattis pharetra mi. Donec lectus neque, vulputate et pellentesque non, porttitor a risus. Vivamus auctor turpis sit amet felis bibendum id tristique purus pulvinar. Morbi dictum felis vel ligula accumsan rhoncus. Donec at lacinia dolor. Cras id libero nibh, sed interdum massa. Integer vulputate feugiat erat, vel rhoncus dui lobortis eget.': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur fermentum risus eu mi sagittis porta. Etiam sit amet augue nec turpis laoreet dignissim sit amet vitae leo. Quisque malesuada hendrerit orci sed pretium. In enim turpis, mattis nec rhoncus id, fringilla ut lectus. Morbi a erat sed nisi volutpat commodo. Pellentesque mattis mi in felis auctor sed euismod lorem placerat. Sed pretium dui non libero luctus tincidunt. Duis pharetra dui sed tortor mollis vitae tincidunt tellus pulvinar. Suspendisse potenti. Duis facilisis augue et turpis varius tincidunt.',
'In tempus elit ipsum. Maecenas dictum pulvinar augue non tincidunt. Fusce lobortis, velit non ullamcorper commodo, tellus nulla pulvinar lectus, sed mattis nisl nisl eget eros. Duis egestas nisl pulvinar erat tempor vitae vestibulum justo tincidunt. Donec dapibus adipiscing lacinia. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis vitae elementum lacus. Nulla ante urna, dignissim quis malesuada vitae, sagittis non nisi. Nunc ultrices tristique magna non adipiscing.': 'Morbi at tortor quis dui adipiscing ultrices a quis felis. Praesent eget orci eros, et adipiscing elit. Proin vel aliquet lectus. Nullam vitae velit ut dolor laoreet posuere. Phasellus accumsan lacus et odio hendrerit accumsan. Ut condimentum eros sit amet lectus dictum porttitor. Curabitur dictum libero ac felis iaculis in condimentum nisl tristique. Praesent tincidunt tellus sed mi convallis non posuere justo tristique. Sed nec quam felis. In vitae justo non lectus vestibulum tincidunt. Curabitur nulla orci, pretium quis vulputate vitae, porta sit amet felis. Etiam eleifend vestibulum nisl, quis egestas magna pulvinar et.'
}
encoded_data = json.dumps(data)
if __name__ == '__main__':
print 'anyjson.dumps: %s, %s' % duration(profile_encode)(anyjson, data)
print 'anyjson.loads: %s, %s' % duration(profile_decode)(anyjson, encoded_data)
print 'cjson.dumps: %s, %s' % duration(profile_encode)(cjson, data)
print 'cjson.loads: %s, %s' % duration(profile_decode)(cjson, encoded_data)
print 'json.dumps: %s, %s' % duration(profile_encode)(json, data)
print 'json.loads: %s, %s' % duration(profile_decode)(json, encoded_data)
print 'simplejson.dumps: %s, %s' % duration(profile_encode)(simplejson, data)
print 'simplejson.loads: %s, %s' % duration(profile_decode)(simplejson, encoded_data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment