Here is an example:
Two containers are identical, but left one is 3x times cpu slower.
Both contains cooking and non-cooking ops inside
For the cooking ops left one utilize parent parameters the right one - child comp parameters.
Okay, word from the code mines is that you found something interesting but it can’t be fixed in official. Performance will be improved for this situation in the next experimental release. Thanks for report!
We’ve made an optimization where Annotate parameters will no longer be evaluated unnecessarily. This will be available in the next Official Build we post after 2023.12230
Finally managed to localize this one properly — 2025.32820 Win.
Root cause: TD re-validates all expressions/binds inside a non-cooking panel sub-network on every parent-parameter change, even though nothing there cooks or renders (even inside .allowCooking = False subtree). Needs all three: (1) a root COMP’s pars change every frame, (2) something inside listens to them (e.g. a Parameter CHOP), (3) there are expressions/binds in non-cooking panel COMPs anywhere inside (baseCOMP / regular ops are fine).
Two more things:
Cost = (N changed pars) × (N expressions/binds) — it re-checks all of them per-parameter, not once per change event.
Binds survive a reload (cost from startup); expressions don’t (need to render the subtree once to trigger).
Full write-up + minimal repro (bugRepro / bugWithReload) are inside the toe
[UPDATED] - same happens if any other non-panel ops are using panel COMPs parameters (/project1/bugRepro1 example)