Created
March 4, 2012 17:19
-
-
Save mylokin/1973968 to your computer and use it in GitHub Desktop.
Testing performance of json, anyjson, cjson, simplejson
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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