# Perspective Performance: Strategies for diagnosing slow load times

**URL:** <https://forum.inductiveautomation.com/t/perspective-performance-strategies-for-diagnosing-slow-load-times/100034>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [December 19, 2024, 10:42am UTC](https://forum.inductiveautomation.com/t/perspective-performance-strategies-for-diagnosing-slow-load-times/100034 "2024-12-19T10:42:25Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Andreas\_Wallevik](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/andreas_wallevik/32/64045_2.png) [@Andreas\_Wallevik](https://forum.inductiveautomation.com/u/Andreas_Wallevik)\
**Post date:** [December 19, 2024, 10:42am UTC](https://forum.inductiveautomation.com/t/perspective-performance-strategies-for-diagnosing-slow-load-times/100034/1 "2024-12-19T10:42:25Z")

</div>

Hello,

This is more of a general inqury, but our company has on several occations had cases with customers who experience slow loading times in Perspective, the reasons may vary vastly, but I'm doing some research now in order to get a better idea on how to actually debug this. Ofcourse, the project planning and design plays a huge role in this. But when problems arise. What do we do?

What are some good practices here, besides from checking thread dumps, memory allocation, logs from client etc?

For example, could certain Perspective components or specific session property configurations significantly impact loading times?

Are there specific Gateway or project settings that have consistently improved Perspective performance?

Have you noticed significant differences in loading times between thin clients, HMIs, and mobile devices? What factors played a role in resolving those differences?

Have anyone had similar problems with loading times, and how did you debug it to find potential bottlenecks in the GW, and how did you solve it?

## Some of the things i have found:

**Optimize embedded views:**

- **Limit nesting depth:** Deeply nested embedded views can significantly impact performance.

**Lightweight components:** Replace complex components with custom SVGs or simpler alternatives when possible to enhance loading efficiency.

**Scripting practices:**  
Batch Tag Reads: Instead of multiple individual `system.tag.read()` calls, utilize `system.tag.readBlocking()` or `system.tag.readAsync()` with a list of tags to minimize gateway load and improve response times.

I've also read that using **runScript** can cause performance issues.

**Adjust Loading Order:** Configuring the `loadingOrder` property of embedded views appropriately might help?. I've found that the `with-parent` setting is generally more efficient.

As it seems to be a somewhat common problem, perhaps it would benefit everyone if we could gather as much data on this as possible. I know every case is specific, but I'm interested to learn more and dive deeper into this issue.

Looking forward to hearing your thoughts! 🙂

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [December 19, 2024, 2:22pm UTC](https://forum.inductiveautomation.com/t/perspective-performance-strategies-for-diagnosing-slow-load-times/100034/2 "2024-12-19T14:22:37Z")

</div>

I would just throw in to use tag and indirect tag bindings as much as possible. In our UDTs we have expression tags that figure out some information and that allows us to reference those tags directly in our embedded views which makes the animation load much faster.

I actually learned from ICC this year that runScript is more performant than doing a script transform; however, the real gains come from calling runScript using a method from object class which is beyond my capabilities to understand. There is discussion on the forum about it but TBH I did not follow it.

---

<div class="post-metadata">

**Author:** ![Ryan\_Deardorff](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_deardorff/32/63815_2.png) [@Ryan\_Deardorff](https://forum.inductiveautomation.com/u/Ryan_Deardorff)\
**Post date:** [December 19, 2024, 2:35pm UTC](https://forum.inductiveautomation.com/t/perspective-performance-strategies-for-diagnosing-slow-load-times/100034/3 "2024-12-19T14:35:45Z")

</div>

> [@Andreas\_Wallevik](#):
>
> I've also read that using **runScript** can cause performance issues.

Use Expressions when possible\* as they are faster than scripts, but brandon1 is right, using `runScript` is faster than using a script transform.

\*I have yet to try it, but many Expression limitations can be addressed with pturmel's Integration Toolkit module:

> [@Automation Professionals' Integration Toolkit Module](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934):
>
> Automation Professionals is pleased to announce the immediately availability of a major upgrade to its free Simulation Aids Integration Toolkit module. The new feature justifying the "major upgrade" language is the implementation of eleven thirty-one new expression functions which use iteration to accomplish complex transforms of datasets and lists, to or from other datasets and lists, applying filtering, ordering, and computed new columns along the way. While there are certain operations that…
