PxPlus User Forum

Main Board => Discussions => Thin Client/WindX => Topic started by: ChrisKCAi on February 06, 2023, 04:17:41 PM

Title: WindX screen rendering performance
Post by: ChrisKCAi on February 06, 2023, 04:17:41 PM
We have traditionally used RDP as our "client" to a Windows backend server running PxPlus. We are actively testing using WindX (*plus/cs/client) connecting to the Simple CS Server (*plus/cs/host) on a Windows server instead. There is a noticeable lag in screen (we use Nomads) rendering on the client using WindX vs. RDP when connecting to the same server. We are testing with a web license installed on the server and with 'TU' and '+W' enabled - are there additional tips/tricks/settings/optimizations we can take advantage of? I know when dealing with images, it's optimal to have the images resident on the local client, but I am talking about just basic panel & control drawing - looking for ways to improve that. Any help is appreciated.
Title: Re: WindX screen rendering performance
Post by: Mike King on February 06, 2023, 05:10:41 PM
There are a number trade offs you need to be aware of when using WindX vs RDP.  Here are a few:


Generally a well designed application on a fairly high speed network connection can run comparable to RDP. 

What is important to remember is that when using RDP almost every user interaction will require a screen update from the host (e.g. opening a drop box, scrolling a list, hovering a mouse over a control to see the tip, even typing data into a input field), whereas with WindX only true changes to controls will potentially require host interaction as WindX creates the controls locally.  Fundamentally screen loads may be slower with WindX but general navigation and user interactions will often be faster.




Title: Re: WindX screen rendering performance
Post by: martinp on February 07, 2023, 10:18:29 AM
If you are going over the internet there are many things that can slow it down.  Depending on what method you are using to connect (cs, telnet, ssh, app server, SSL)  but within *winproc there are number of features that may or may not be needed that slow performance on internet connections (Even fast ones)

I went through *winproc and commented out many sections that I found slowed things down for me and sped things up tremendously, however you may lose some features, but you may not be using them anyway.

For example there is a "Check customization" section that for me really slowed things down you can try to disable that if you don't need that feature.

Also in *winproc.rsz  there is a CHECK_MANUAL_MANIPULATION that can slow down folders

Screen resizing is also slower remotely but those fixes may help, if you have a fixed window its much faster but you need to accommodate different resolutions which may be difficult.

These two are probably offer the most improvement.

This can truely only be appreciated by working remotely over the years :)  If you are local on a LAN things will be much faster.
Title: Re: WindX screen rendering performance
Post by: Peter.Higgins on June 02, 2023, 03:47:05 PM
Chris,
Hope the following few tricks that can save Dev and network time with nomads are helpful.

Put as little configuration in Nomads as possible. Especially for grids.
Use the Nomads variables as much as possible ie. PERFORM ";Change"+ID$
Minimize control network traffic with Pseudo Multi-Properties or Multi-Property Access

Grids have the most speed complaints so the following really speeded things up.
Read/write by linedata records. 
Use Pseudo Multi-Properties to configure. Every . removes a network round trip.
load data first in the largest string(s) you can transfer.  I've been using gMaxSize=500000
Add Minimal colors afterwards and send in as few Pseudo Multi-Properties strings as possible.
Use the grd'Fmt$ to both configure the grid and return the IOLIST. 
Its not possible to mix and match every property in one Multi-Properties submission, especially fmt$.
A bonus to FMT$ is easy editing of named fields to match files, OTF grid formatting and easy sorts and column swapping.  Iolists don't care about column order, control properties do.   
Use the Sheet'Range()'PasteSpecial() for loading grids to Excel and/or clipboard tabbed delimited for non excel
IF windows server & client the MS safe array method works well too