[FIX] models: performance of `mapped` is now in O(n) instead of O(n²)
This commit is contained in:
parent
ba8ef420eb
commit
fa427f15b7
|
@ -5363,7 +5363,11 @@ class BaseModel(object):
|
||||||
"""
|
"""
|
||||||
if self:
|
if self:
|
||||||
vals = [func(rec) for rec in self]
|
vals = [func(rec) for rec in self]
|
||||||
return reduce(operator.or_, vals) if isinstance(vals[0], BaseModel) else vals
|
if isinstance(vals[0], BaseModel):
|
||||||
|
# return the union of all recordsets in O(n)
|
||||||
|
ids = set(itertools.chain(*[rec._ids for rec in vals]))
|
||||||
|
return vals[0].browse(ids)
|
||||||
|
return vals
|
||||||
else:
|
else:
|
||||||
vals = func(self)
|
vals = func(self)
|
||||||
return vals if isinstance(vals, BaseModel) else []
|
return vals if isinstance(vals, BaseModel) else []
|
||||||
|
|
Loading…
Reference in New Issue