Small performance improvement in tracking template results (#110622)
- Avoid inner function creation each refresh - remove extra unneeded checks from ratelimit
This commit is contained in:
parent
094fd3d918
commit
664285b9d4
2 changed files with 24 additions and 20 deletions
|
@ -1106,6 +1106,24 @@ class TrackTemplateResultInfo:
|
|||
|
||||
return result_as_boolean(result)
|
||||
|
||||
@callback
|
||||
def _apply_update(
|
||||
self,
|
||||
updates: list[TrackTemplateResult],
|
||||
update: bool | TrackTemplateResult,
|
||||
template: Template,
|
||||
) -> bool:
|
||||
"""Handle updates of a tracked template."""
|
||||
if not update:
|
||||
return False
|
||||
|
||||
self._setup_time_listener(template, self._info[template].has_time)
|
||||
|
||||
if isinstance(update, TrackTemplateResult):
|
||||
updates.append(update)
|
||||
|
||||
return True
|
||||
|
||||
@callback
|
||||
def _refresh(
|
||||
self,
|
||||
|
@ -1129,20 +1147,6 @@ class TrackTemplateResultInfo:
|
|||
info_changed = False
|
||||
now = event.time_fired if not replayed and event else dt_util.utcnow()
|
||||
|
||||
def _apply_update(
|
||||
update: bool | TrackTemplateResult, template: Template
|
||||
) -> bool:
|
||||
"""Handle updates of a tracked template."""
|
||||
if not update:
|
||||
return False
|
||||
|
||||
self._setup_time_listener(template, self._info[template].has_time)
|
||||
|
||||
if isinstance(update, TrackTemplateResult):
|
||||
updates.append(update)
|
||||
|
||||
return True
|
||||
|
||||
block_updates = False
|
||||
super_template = self._track_templates[0] if self._has_super_template else None
|
||||
|
||||
|
@ -1151,7 +1155,7 @@ class TrackTemplateResultInfo:
|
|||
# Update the super template first
|
||||
if super_template is not None:
|
||||
update = self._render_template_if_ready(super_template, now, event)
|
||||
info_changed |= _apply_update(update, super_template.template)
|
||||
info_changed |= self._apply_update(updates, update, super_template.template)
|
||||
|
||||
if isinstance(update, TrackTemplateResult):
|
||||
super_result = update.result
|
||||
|
@ -1182,7 +1186,9 @@ class TrackTemplateResultInfo:
|
|||
continue
|
||||
|
||||
update = self._render_template_if_ready(track_template_, now, event)
|
||||
info_changed |= _apply_update(update, track_template_.template)
|
||||
info_changed |= self._apply_update(
|
||||
updates, update, track_template_.template
|
||||
)
|
||||
|
||||
if info_changed:
|
||||
assert self._track_state_changes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue