Performance - DoubleDeez/MDFastBinding GitHub Wiki

MDFastBinding's strategy to being performant is to only update values when something has changed. The UpdateType property on each node in the binding graph determines how performant the binding will be by limiting how frequently each node runs its logic. You'll know your binding runs in tick by the clock icon (ClockIcon_16x) on it in the Binding Editor list, otherwise you'll see a flame icon (FlameIcon_16x) for bindings that run only once or are event-based. Additionally, the nature of the node itself can impact performance (eg. it could call a heavy function or build a massive string).

Picking the appropriate Update Type for your situation will keep your bindings fast and correct. The options are:

Once
This update type will attempt to grab the node's value every tick until it succeeds and then never update again, only using the cached value any time it's accessed. This is useful for cases where the value will never change, such as grabbing a reference to a child widget placed in the designer.

IfUpdatesNeeded
Nodes with this type will only update if any of its inputs have changed in value. So even if an input node has run its update logic, this node won't run its logic if that input value didn't change.

Always
Having any node with the Always update type connected in your binding graph will cause your binding to be checked every tick. This isn't ideal for performance, but is useful when you need something to "just work".

EventBased
This type isn't selectable by the user and is instead enforced by the implementation of the binding node. Currently, the only node that uses this type is the Field Notify node which leverages the Field Notification System to only update when a property's value changes.

Here's a binding from the example asset that only runs when the Visibility of the VisImage widget changes thanks to the Field Notify system: image
And when it does run, only the Field Notify and Call a Function nodes run since the Read a Property node has its Update Type set to Once.