Opened 10 years ago
Closed 9 years ago
#25753 closed Cleanup/optimization (fixed)
Cache formats retrieved from django settings in formats.get_format
| 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 (last modified by )
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 as 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'))
Change History (7)
comment:1 by , 10 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 10 years ago
| Patch needs improvement: | set |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:3 by , 10 years ago
comment:5 by , 9 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
The patch is now rebased on the current master