Opened 12 months ago
Closed 12 months ago
#35893 closed Cleanup/optimization (duplicate)
Using list comprehension (instead of a generator) to any/all where the items are side-effect free is a performance error
| Reported by: | john-parton | Owned by: | john-parton |
|---|---|---|---|
| Component: | contrib.admin | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description
When passing a generator to any() or all(), Python can perform short-circuit evaluation to avoid needless computation.
Directly passing a list using list-comprehension is generally not recommended, unless the list-comprehension has a side-effect (for example calling a method that sets attributes on an object)
There's at least one place in the code-base where it's safe to replace list comprehension with a generator and get the short-circuit optimization for "free."
Change History (3)
comment:1 by , 12 months ago
| Has patch: | set |
|---|
comment:2 by , 12 months ago
comment:3 by , 12 months ago
| Resolution: | → duplicate |
|---|---|
| Status: | assigned → closed |
I will track this with #23968 and update the commit to Refs
Patch here https://github.com/django/django/pull/18770