Vision client performance issues


We have run into some performance issues while starting the Vision client.
We are moving from Ignition 7.9.12 to 8.0.15. The basic functions and data are very similar but the initial client startup is very slow compared to the old system.

Although the overall project also seems to be slower, the problem seems most visible with the main overview page which opens on startup and where we show all the machines states.

Differences between the old and new system:

Different Tag Structure:
New - All machines are described via one universal UDT, where every instances logic is defined through Tag parameters.
Old - Every machine type had its own UDT.

New features in the new system:
We added a machine selection and highlighting feature to the new project, which uses a Dataset type client tag and a one time (poll rate set to 0) runScript expression on a valueChanged event, but we have already tested a total removal of said scripts so this should not be the case.

Rounded frame corners - We rounded the corners + added a rectangle logic for the highlighting, but once again as we removed these features, the load time was still slow.

We have tried adding initial and max memory for launching, different caching options on windows, separating our perspective project from the vision project,

I’ve attached thread dumps for the old system and the new system Main Overview Window startups.
Ignition_7.9.12_Thread_Dump.txt (24.0 KB)
Ignition_8.0.15_Thread_Dump.txt (31.2 KB)

I can imagine this added quite a bit of tags to the UDT.

How do you bind from Vision properties to tags? Do you use UDT bindings or indirect tagpaths?

It may have been resolved in 8.0, but in 7.9, if you used UDT bindings, every binding would request to load the entire UDT.

So if you have 10 tags on an UDT, and you display them in 10 bindings, it would request 100*tagsize during load time. If you have 20 tags in the UDT, it would request 200*tagsize.

When you use indirect tags, it only requests the single tags. So we try to never use UDT bindings again (we still use UDTs in the tag definitions though).

That said, we have also experienced that the page loading in 8.0 is a bit slower compared to 7.9. So you probably won’t be able to get it completely on par with 7.9.

1 Like

Thank you for your reply, @Sanderd17!
We also use indirection. The templates are named after the UDT and every tag read or write uses the template names.
We actually went to indirection, because of a problem in Ig7.9 where some of our templates showed an overlay constantly

It sounds like you’ve addressed this already, but we ran into an issue in 8.0.15 that caused pages using a template with UDT binding to load extremely slowing. Updating the templates to use indirect bindings on a tag path dramatically improved page load performance in 8.0.15. This was on pages with as little as two instances of the template and each UDT has less than a dozen tags (integers and booleans).

I believe the issue is resolved in 8.0.16, but haven’t tested as we resolved the issue in 8.0.15 as noted above and don’t plan to go back to UDT bindings (had already eliminated them elsewhere, but missed this one).