# What is the most efficient tag binding method?

**URL:** <https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148>\
**Category:** Ignition\
**Tags:** ignition81, perspective\
**Created:** [June 16, 2023, 2:57pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148 "2023-06-16T14:57:02Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Shawn\_Rieger](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/shawn_rieger/32/46336_2.png) [@Shawn\_Rieger](https://forum.inductiveautomation.com/u/Shawn_Rieger)\
**Post date:** [June 16, 2023, 2:57pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/1 "2023-06-16T14:57:02Z")

</div>

Hello! When using perspective, generally speaking, what is the most efficient way to bind a tag value to a property? Is there a big difference between Expression, Tag \> (Direct, Indirect, Expression)?

Additionally, is there a performance difference between binding to another property using expression binding vs property binding?

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [June 16, 2023, 3:12pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/2 "2023-06-16T15:12:54Z")

</div>

> [@Shawn\_Rieger](#):
>
> Is there a big difference between Expression, Tag \> (Direct, Indirect, Expression)?

This depends on the context that the binding is being used in.

> [@Shawn\_Rieger](#):
>
> Additionally, is there a performance difference between binding to another property using expression binding vs property binding?

Yes. But in most cases it is probably negligible. If all you need is a property binding (e.g. you're not doing any work to it) then use a property binding. The real perfomance hits come when you use a property binding to get the value and then move into transforms to manipulate it when the same result can be achieved via another avenue.

You might find this interesting.

> [@Building for Performance](https://forum.inductiveautomation.com/t/building-for-performance/71082/3):
>
> In this example, #3 is the most performant, though it could be argued that the performance gain in this instance would be negligible. Anytime you add an additional processing step you add latency. In general for the best performance I follow these guidelines: If you can achieve what you want with a binding, use a binding. Always use the binding type that is the most direct. (e.g. if all you need is a binding to a property use a property binding, not an expression binding.) Given the choice b…

---

<div class="post-metadata">

**Author:** ![Shawn\_Rieger](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/shawn_rieger/32/46336_2.png) [@Shawn\_Rieger](https://forum.inductiveautomation.com/u/Shawn_Rieger)\
**Post date:** [June 16, 2023, 3:28pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/3 "2023-06-16T15:28:29Z")

</div>

This is invaluable! Thank you so much. I'll be moving this info into a document I'm building for my team!

To take this a step further, sometimes we create a non-historical, event-driven memory tag that uses multiple other tag values to form its value through an expression. We do this when we don't want to replicate this in multiple bindings across our perspective HMI. Example:

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/4/644c26622f85a317100666a0931f98650938facb.png)

Is this shortcut degrading performance?

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [June 16, 2023, 4:45pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/4 "2023-06-16T16:45:25Z")

</div>

I would not believe this to degrade performance, as this will execute outside of the normal "Perspective Session" processing.

A custom session property would probably have been my first thought for this type of thing, beings as it is a non-historical tag. But I don't think that you would see any noticeable performance gain or loss.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 16, 2023, 5:16pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/5 "2023-06-16T17:16:58Z")

</div>

> [@lrose](#):
>
> But I don't think that you would see any noticeable performance gain or loss.

I would expect this expression tag approach to be a win if the tag is commonly viewed by more than one client (like a common item in an application-wide docked view) all the time. It will be a performance loss for tags that are not being watched all the time. (Because the expression tag will update for every reference change, regardless.)

I normally would not do this, especially if the application size justifies a frontend/backend split.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [June 16, 2023, 5:19pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/6 "2023-06-16T17:19:44Z")

</div>

> [@pturmel](#):
>
> (Because the expression tag will update for every reference change, regardless.)

I hadn't considered that.

---

<div class="post-metadata">

**Author:** ![Shawn\_Rieger](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/shawn_rieger/32/46336_2.png) [@Shawn\_Rieger](https://forum.inductiveautomation.com/u/Shawn_Rieger)\
**Post date:** [June 16, 2023, 5:45pm UTC](https://forum.inductiveautomation.com/t/what-is-the-most-efficient-tag-binding-method/75148/7 "2023-06-16T17:45:06Z")

</div>

> [@pturmel](#):
>
> I would expect this expression tag approach to be a win if the tag is commonly viewed by more than one client (like a common item in an application-wide docked view) all the time. It will be a performance loss for tags that are not being watched all the time. (Because the expression tag will update for every reference change, regardless.)

That makes sense. In my case, it will be used in multiple areas of the app, including the front overview screen, which our operators will have open most of the time. However, it may be on a tab that would not necessarily be active all the time. In this instance, its looking at status tags that won't change too often, maybe a couple of times a day at most.
