[manual] Use ujson instead of simplejson.

This saves something like 15ms on our 1000 message get_old_messages
queries, and will save even more when we start sending JSON dumps into
our memcached system.

We need to install python-ujson on servers and dev instances before
pushing this to prod.

(imported from commit 373690b7c056d00d2299a7588a33f025104bfbca)
This commit is contained in:
Tim Abbott
2013-06-18 17:55:55 -04:00
parent 678dd502ef
commit 222ef672b5
25 changed files with 120 additions and 119 deletions

View File

@@ -18,7 +18,7 @@ from zephyr.lib.timestamp import datetime_to_timestamp
from django.db.models.signals import post_save
from bitfield import BitField
import simplejson
import ujson
MAX_SUBJECT_LENGTH = 60
MAX_MESSAGE_LENGTH = 10000
@@ -117,7 +117,7 @@ class UserProfile(AbstractBaseUser):
# [("step 1", true), ("step 2", false)]
# where the second element of each tuple is if the step has been
# completed.
onboarding_steps = models.TextField(default=simplejson.dumps([]))
onboarding_steps = models.TextField(default=ujson.dumps([]))
def tutorial_stream_name(self):
# If you change this, you need to change the corresponding
@@ -339,7 +339,7 @@ class Message(models.Model):
if self.last_edit_time != None:
obj['last_edit_timestamp'] = datetime_to_timestamp(self.last_edit_time)
obj['edit_history'] = simplejson.loads(self.edit_history)
obj['edit_history'] = ujson.loads(self.edit_history)
if apply_markdown and self.rendered_content_version is not None:
obj['content'] = self.rendered_content
obj['content_type'] = 'text/html'