From: p.callegari on
Dirk
My experience: xp prof as server + 5 xp workstation + Gb Lan + Switch
+ CAT6 cables. VO Exe = 2mb DLL=8mb DB=very big (2gB)
Programming guidelines: CDX indexes + optimized filter queries
(filtered fields included in CDX)
I launch the program in each workstation from a local directory that
contain a copy of exe, dll's and some CAVO dll's as
Cato*.dll, CavoDbf.rdd, Dbfcdx.rdd, VO28GUI.DLL, _DbfCdx.rdd etc etc,
while dbf's stay on a shared directory on server.
Every day i have a scheduled backup with ROBOCOPY that 1) copy server
modified files on a backup dir 2) upgrade older exe and dll's on all
workstations if i make a new version of my program.
With this approach speed is not a problem. Speed of workstations is
about the same than working on server (only a 1-2 seconds delay on
startup), and with robocopy i have not to worry about copying new
files from server to workstation.
Recently i upgraded to terminal services. I bought 5 cheap HP thin
clients with linux that RDP with the same xp Prof server. I'm very
happy because thin client are noiseless, very fast to configure, no
time for MS stuff (windows update etc etc) and only 10 watt
consumption. Speed is very fast (same as working on server). XP SP3 is
software-limited only to 1 RDP, so you need.... a little workaround.
Ciao Paolo



From: Dirk (Belgium) on
Paul D B wrote:

>
> But Dirk: what I would do, before going through the effort of
> redesigning, is see if it is the data access that slows things down,
> or the building/painting of a too complex window that is overloaded
> with controls. It is quite easy to test: - open the childwindow
> without opening the DBF's - or if this is too hard to do, use copies
> of the DBF's that contains only a few records - and do the test with
> the data on the local drive, and again with the data on the remote
> drive.
>
>

Paul,

These tests are all done. Empty DBF's over the network takes 2 seconds
less then full DBF's (2 seconds on 14 or 9 seconds).
So, it is realy the window design with takes so much time.

It is a childwindow, with 9 tabs.
Each tab is a splitwindow(!): On top is one record (recordview) - on
bottom is a databrowser (browseview) of the same shared DBF. Each top
has at least 1 subdatawindow with a parent-child DBF. Most top have
about 25 linked controls to this DBF.

Childwindow = DataWindow with 9 Tabs
Tab one = Splitwindow with Top-part and Bottom part
Top-Part = DataWindow + SubDataWindow
DataWindow with 25 controls
SubDataWindow with databrowser with 10 columns
Bottom-Part = DataWindow with databrowser
Databrowser with 20 columns
Tab two = Splitwindow with Top-part and Bottom part
Top-Part = DataWindow + SubDataWindow
DataWindow with 25 controls
SubDataWindow with databrowser with 10 columns
Bottom-Part = DataWindow with databrowser
Databrowser with 20 columns
....
Tab nine = Splitwindow with Top-part and Bottom part
Top-Part = DataWindow + SubDataWindow
DataWindow with 25 controls
SubDataWindow with databrowser with 10 columns
Bottom-Part = DataWindow with databrowser
Databrowser with 20 columns

All Tabs are linked in such a way that changing some records on one tab
also change records on other tabs. This changes are only 'applied' when
moving from one tab to another tab.

The fastest time needed to open this childwindow (local exe + local dbf
+ empty dbf) is about 3312 milliseconds (3,5 seconds).

local exe + local dbf + empty dbf = 3312 milliseconds
local exe + network dbf (100) + empty dbf = 6687 mseconds
local exe + network dbf (1GB) + empty dbf = 5194 mseconds

local exe + local dbf + full dbf = 4469 milliseconds
local exe + network dbf (100) + full dbf = 9017 mseconds
local exe + network dbf (1GB) + full dbf = 7452 mseconds

network exe + local dbf + empty dbf = 7108 milliseconds
network exe + network dbf (100) + empty dbf = 11861 mseconds
network exe + network dbf (1GB) + empty dbf = 9064 mseconds

network exe + local dbf + full dbf = 8065 milliseconds
network exe + network dbf (100) + full dbf = 14004 mseconds
network exe + network dbf (1GB) + full dbf = 10619 mseconds

Cheers,

Dirk
--

From: Paul D B on
Dirk (Belgium) wrote:
> Paul D B wrote:
>
>>
>> But Dirk: what I would do, before going through the effort of
>> redesigning, is see if it is the data access that slows things down,
>> or the building/painting of a too complex window that is overloaded
>> with controls. It is quite easy to test: - open the childwindow
>> without opening the DBF's - or if this is too hard to do, use copies
>> of the DBF's that contains only a few records - and do the test with
>> the data on the local drive, and again with the data on the remote
>> drive.
>>
>>
>
> Paul,
>
> These tests are all done. Empty DBF's over the network takes 2 seconds
> less then full DBF's (2 seconds on 14 or 9 seconds).
> So, it is realy the window design with takes so much time.
>
> It is a childwindow, with 9 tabs.
> Each tab is a splitwindow(!): On top is one record (recordview) - on
> bottom is a databrowser (browseview) of the same shared DBF. Each top
> has at least 1 subdatawindow with a parent-child DBF. Most top have
> about 25 linked controls to this DBF.
>
> Childwindow = DataWindow with 9 Tabs
> Tab one = Splitwindow with Top-part and Bottom part
> Top-Part = DataWindow + SubDataWindow
> DataWindow with 25 controls
> SubDataWindow with databrowser with 10 columns
> Bottom-Part = DataWindow with databrowser
> Databrowser with 20 columns
> Tab two = Splitwindow with Top-part and Bottom part
> Top-Part = DataWindow + SubDataWindow
> DataWindow with 25 controls
> SubDataWindow with databrowser with 10 columns
> Bottom-Part = DataWindow with databrowser
> Databrowser with 20 columns
> ....
> Tab nine = Splitwindow with Top-part and Bottom part
> Top-Part = DataWindow + SubDataWindow
> DataWindow with 25 controls
> SubDataWindow with databrowser with 10 columns
> Bottom-Part = DataWindow with databrowser
> Databrowser with 20 columns
>
> All Tabs are linked in such a way that changing some records on one
> tab also change records on other tabs. This changes are only
> 'applied' when moving from one tab to another tab.
>
> The fastest time needed to open this childwindow (local exe + local
> dbf + empty dbf) is about 3312 milliseconds (3,5 seconds).
>
> local exe + local dbf + empty dbf = 3312 milliseconds
> local exe + network dbf (100) + empty dbf = 6687 mseconds
> local exe + network dbf (1GB) + empty dbf = 5194 mseconds
>
> local exe + local dbf + full dbf = 4469 milliseconds
> local exe + network dbf (100) + full dbf = 9017 mseconds
> local exe + network dbf (1GB) + full dbf = 7452 mseconds
>
> network exe + local dbf + empty dbf = 7108 milliseconds
> network exe + network dbf (100) + empty dbf = 11861 mseconds
> network exe + network dbf (1GB) + empty dbf = 9064 mseconds
>
> network exe + local dbf + full dbf = 8065 milliseconds
> network exe + network dbf (100) + full dbf = 14004 mseconds
> network exe + network dbf (1GB) + full dbf = 10619 mseconds
>
> Cheers,
>
> Dirk

Hi Dirk, well you have done some precise testing now and this allows you to
pinpoint several problems.
I must admit that the difference between:
> local exe + local dbf + empty dbf = 3312 milliseconds
and
> network exe + local dbf + empty dbf = 7108 milliseconds

is surprising, given the fact that the application is already loaded in
memory and that these timings are for the opening of a childwindow only (but
that was your initial problem and question, and I have no answer for that).

But it is clear that you have to redesign your window which is overloaded.
Not easy, I've got a few similar windows (also with several tabs that all
have browsers and all share the same servers) and the fact that you are
sharing servers between the subpages and that they communicate which each
other, makes it quite difficult to redesign it.
But it is clear that you should go to an approach where you only open the
servers and browsers when the user opens that tabpage.

--
Paul


From: Dirk (Belgium) on
Paul D B wrote:

> Dirk
>
> Hi Dirk, well you have done some precise testing now and this allows
> you to pinpoint several problems. I must admit that the difference
> between:
> > local exe + local dbf + empty dbf = 3312 milliseconds
> and
> > network exe + local dbf + empty dbf = 7108 milliseconds
>
> is surprising, given the fact that the application is already loaded
> in memory and that these timings are for the opening of a childwindow
> only (but that was your initial problem and question, and I have no
> answer for that).
>
> But it is clear that you have to redesign your window which is
> overloaded. Not easy, I've got a few similar windows (also with
> several tabs that all have browsers and all share the same servers)
> and the fact that you are sharing servers between the subpages and
> that they communicate which each other, makes it quite difficult to
> redesign it. But it is clear that you should go to an approach where
> you only open the servers and browsers when the user opens that
> tabpage.


Paul,

Redesign will be done next month. January is de performance month for
me for the whole application.

BUT the fact that a network EXE is slower then the local EXE can not be
fixed by me, because this is a Microsoft Problem. I was hoping that
someone could
(a) confirm this problem with his application
(b) give me a solution (registry etc)
but I receive nothing about that.

So, I also will have to write an application loader, and a new upgrade
senario (this would be the most problem).

Tx for your replies,

Dirk
--

From: Marc Verkade [Marti IT] on
Hai,

We have seen that communicating through a share F:\App.exe works slower than
using an UNC path like \\serverip\appshare\app.exe

Perhaps worth a try.

--
Grtz, Marc


"Dirk (Belgium)" <dirk.dot.herijgers(a)pbprojects.dot.be> schreef in bericht
news:4iK1l.109737$xx1.44073(a)newsfe24.ams2...
> Paul D B wrote:
>
>> Dirk
>>
>> Hi Dirk, well you have done some precise testing now and this allows
>> you to pinpoint several problems. I must admit that the difference
>> between:
>> > local exe + local dbf + empty dbf = 3312 milliseconds
>> and
>> > network exe + local dbf + empty dbf = 7108 milliseconds
>>
>> is surprising, given the fact that the application is already loaded
>> in memory and that these timings are for the opening of a childwindow
>> only (but that was your initial problem and question, and I have no
>> answer for that).
>>
>> But it is clear that you have to redesign your window which is
>> overloaded. Not easy, I've got a few similar windows (also with
>> several tabs that all have browsers and all share the same servers)
>> and the fact that you are sharing servers between the subpages and
>> that they communicate which each other, makes it quite difficult to
>> redesign it. But it is clear that you should go to an approach where
>> you only open the servers and browsers when the user opens that
>> tabpage.
>
>
> Paul,
>
> Redesign will be done next month. January is de performance month for
> me for the whole application.
>
> BUT the fact that a network EXE is slower then the local EXE can not be
> fixed by me, because this is a Microsoft Problem. I was hoping that
> someone could
> (a) confirm this problem with his application
> (b) give me a solution (registry etc)
> but I receive nothing about that.
>
> So, I also will have to write an application loader, and a new upgrade
> senario (this would be the most problem).
>
> Tx for your replies,
>
> Dirk
> --
>