Debug in GH: Track which components recompute after a parameter update

Hi everyone,

I’m working on a fairly large Grasshopper definition with multiple components and clusters. I’m currently trying to improve performance and optimize the definition.

I know how to see the computation time for each component or cluster, but what I’m struggling with is understanding the flow of data and updates.

For example, when I change the value of a slider,

Is there a way to see which components in the definition are being updated or recalculated because of that slider change, and which ones remain unaffected?

This would really help in debugging and performance tuning. Any tips or plugins that could help visualize or track this would be much appreciated!

Thanks!

Two complete different approaches

1.) Re-factor you definition. Create and test logical groups of components (“units”) in isolation. Create “performance tests” on smaller units and tinker around with performance tweaks in those units. Its a matter of organisation and encapsulation if you believe it or not.

2.)
It is technically possible to jump through the source code of Grasshopper and partially through Rhino. You can use standalone C# and C++ debuggers and disassembler. This gives you quite a good insight about the GH and Rhino mechanics. But it has a very steep learning curve and is legally borderline.

This is probably not exactly what you’re asking for, but if one selects a component and holds down Ctrl on the keyboard, one can Arrow Left and Arrow Right on the keyboard to traverse the dataflow/graph:

what I ended up doing was connecting a data recorded to the components I needed to check and move the different sliders to see what was updated and what stayed the same.