Form loads slowly

Posted by Froy on 08-Jul-2010 05:07

Hi everyone !

We have some troubles with the loading time of ours forms.

It takes up to a few seconds to be totally painted, we ran a few tests on a data empty form which gave the same results.

Two points seems interesting :

- it happens only the first time the form is loaded

- it happens only with Infragistics components; with the Microsoft's controls the painting is really quick.

After some search on the net, and mostly on the Infragistics forum. I'm beginning to think about a .NET vm's JIT-compile issue / misconfiguration.

I've red some posts about running a tool named NGEN.exe on the assembly files (the infragistics dll) but to be honnest I'm confused and I didn't manage to do it...

Where are the assemblies we OE is using by the way ? We are using Rountable software, in a central repository, but I don't think it has any implications.

Thank you for your answers !

PS : I found some informations here, but I can't apply to OpenEdge : http://community.infragistics.com/forums/p/30286/165578.aspx#165578

All Replies

Posted by Peter Judge on 08-Jul-2010 07:39

froy wrote:

Hi everyone !

We have some troubles with the loading time of ours forms.

It takes up to a few seconds to be totally painted, we ran a few tests on a data empty form which gave the same results.

Two points seems interesting :

- it happens only the first time the form is loaded

- it happens only with Infragistics components; with the Microsoft's controls the painting is really quick.

After some search on the net, and mostly on the Infragistics forum. I'm beginning to think about a .NET vm's JIT-compile issue / misconfiguration.

I've red some posts about running a tool named NGEN.exe on the assembly files (the infragistics dll) but to be honnest I'm confused and I didn't manage to do it...

Where are the assemblies we OE is using by the way ? We are using Rountable software, in a central repository, but I don't think it has any implications.

Thank you for your answers !

PS : I found some informations here, but I can't apply to OpenEdge : http://community.infragistics.com/forums/p/30286/165578.aspx#165578

You should be able to run ngen on the Infragistics UltraControls that are installed as part of OpenEdge, I would think. OpenEdge does some magic under the covers since there really isn't the concept of an assembly in ABL, so there's nothing really to run it on from the application perspective.

-- peter

Posted by Roger Blanchard on 08-Jul-2010 07:48

I believe there is a session startup parameter that will preload the assemblies. I forget what it is but I recall sitting in on a presentation by Shelley where she mentioned this.

Posted by Roger Blanchard on 08-Jul-2010 07:52

Actually it is preloading the CLR. You may want to try this although I am not sure it will help.

Preload CLR (-preloadCLR) startup parameter

Use Preload CLR (

-preloadCLR) to load the .NET Common Language Runtime (CLR) and any

specified assemblies into the ABL session at startup. This provides for deterministic loading of

the CLR and assemblies when the application is started.

If you do not specify -

preloadCLR, the AVM loads the CLR the first time ABL refers to, or uses,

a .NET type or object either at compile time or runtime. The individual assemblies are loaded

as needed.

If you specify

-preloadCLR and the client machine does not have an appropriate version of the

.NET framework installed, OpenEdge raises an error and shuts down.

For more information on accessing .NET objects using the ABL, see

OpenEdge Development:

GUI for .NET Programming

. For information on the .NET CLR, refer to the Microsoft .NET

Framework documentation.

Posted by Froy on 08-Jul-2010 09:40

Hi Peter,

Thx for your answer.

Do you mean that running the ngen won't help, as OE does not use the assemblies in the regular way ?

Posted by Froy on 08-Jul-2010 09:42

Thanks Roger, unfortunatly this hasn't changed anything. But maybe is there a step missing like declaring .net cache.

I'm going to search some documentation about this parameter.

Posted by Admin on 08-Jul-2010 09:48

What I usually do when this is an issue is to preload some of the Infragistics Assemblies by instantiating a dummy object:

DEFINE VARIABLE oObject AS System.Object NO-UNDO.

oObject = NEW Infragistics.Win.UltraWinToolbars.UltraToolbarsManager () .

oObject = NEW Infragistics.Win.UltraWinGrid.UltraGrid () .

...

DELETE OBJECT oObject .

and so on. I do so in a splash screen etc. I don't preload all Infagistics Libraries, just those very likely to start. Some users prefer to wait longer when the app starts, others don't.

This thread is closed