Opened 10 years ago
Closed 10 years ago
#25743 closed Cleanup/optimization (fixed)
Optimize formats.localize(_input)
| 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
While doing some benchmarking on some simple templates I noticed render_value_in_context was spending a disproportionate amount of time in utils.formats.localize while rendering a simple string.
Performance increased greatly on my machine after simply altering localize to bail early on strings. (I did the same thing for localize_input where I saw the same pattern.)
Here's a benchmark script and my results before and after:
import timeit
print('localize(string): %s' % timeit.repeat('localize("a")', setup='from django.utils.formats import localize'))
print('localize_input(string): %s' % timeit.repeat('localize_input("a")', setup='from django.utils.formats import localize_input'))
Before:
localize(string): [1.886936140996113, 1.960805894996156, 1.9073195710006985] localize_input(string): [1.6485704379956587, 1.6588637870008824, 1.6481186080054613]
After:
localize(string): [0.2906172150032944, 0.2897624880060903, 0.28507295199960936] localize_input(string): [0.28498719700291986, 0.2985827610027627, 0.2751107259973651]
Change History (2)
comment:1 by , 10 years ago
| Component: | Template system → Utilities |
|---|---|
| Triage Stage: | Unreviewed → Ready for checkin |
comment:2 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
In 9a2aca60: