Opened 9 years ago

Last modified 7 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'))

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top