Grasshopper component output re-formatting

Hi David R (+ gh developers?),

When making changes to the output of a component (for example simplifying an output tree or flattening an output list) on the component itself, the entire component is re-evaluated. Is this really necessary?
For components with large run-times it would be a great improvement if re-formatting the output would not lead to a complete re-run.
I know re-formatting could be done in a subsequent component also but this makes files messier.

Not sure how easy this would be to implement or if there are obvious reasons not to do so but it would be cool if you could give it a thought!


Imagine a component outputs a list. If I right-click on the output and choose to reverse the list, the entire component runs again I think.
My assumption here is that this is unnecessary overhead. The operation on the list could be performed without running the component again (simply cache the list and reverse it. Whatever the operation was to compute the list entries in the first place, it needs not be performed again).
In my view, the same is true for the other available options of a standard output (flatten, graft, simplify).

As I mentioned, there may be a good reason why this isn’t the default behaviour but I thought I’d ask!

Sometimes this is true. Reverse for example can always be performed without recalculating. As can Flatten. However other operations are destructive (unflatten, simplify, …), not to mention that components may choose to behave differently depending on the state of their outputs. The standard components certainly don’t do anything so unusual, but the SDK permits it. So as a general rule any change to an output will cause a recompute of the parent component and all downstream ones.

I didn’t realise this was possible but that would certainly be a good reason not to pursue this then :wink: Many thanks!