Opened 9 years ago
Last modified 8 years ago
#25753 closed Cleanup/optimization
Cache formats retrieved from django settings in formats.get_format — at Initial Version
Reported by: | Jaap Roes | Owned by: | nobody |
---|---|---|---|
Component: | Utilities | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
If L10N is disabled formats.get_format
always goes through django's settings module to get the requested format type. Accessing settings is fairly expensive, so I propose caching these values in the same way the values are already cached when L10N is enabled.
import timeit import django from django.conf import settings from django.utils.formats import get_format settings.configure() django.setup() print('%s' % timeit.repeat("get_format('DATETIME_INPUT_FORMATS')", setup='from __main__ import get_format'))
Before:
[4.791080316994339, 4.822412799010635, 4.568255095000495]
After:
[2.801479902002029, 2.874774623007397, 2.796864636009559]
The performance remains the same for when L10N is enabled (e.g. replace settings.configure()
with settings.configure(USE_L10N=True, LANGUAGE_CODE='nl')
)