Opened 7 months ago

Last modified 7 months ago

#35232 closed Cleanup/optimization

Cache Options.verbose_name_raw — at Version 1

Reported by: Adam Johnson Owned by: nobody
Component: Database layer (models, ORM) 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 Adam Johnson)

Another candidate for caching, like #35230, following the same system check profiling.

The Model._meta.verbose_name_raw property returns the stringified version of the verbose_name attribute whilst temporarily disabling translations. It is only used in django.contrib.auth for creating permission names.

I found this property was taking ~15 of the total runtime for system checks on a project with 118 models. calls. Turning it into a cached_property and adding a no-translation fast path saves nearly all this cost, with the below results.

Before: 520 calls taking 10ms
After: 105 calls taking ~0ms

Change History (1)

comment:1 by Adam Johnson, 7 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top