Big form rendering

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Big form rendering

Lark
Can you advice me, is there an ability to speed-up XForm rendering? I have a huge form (page can be divided by more or less individual sections of controls, but the instance must be one), so it takes a lot of time to open it. I have tried increasinng caches in configs, but it had very little effect.
Is there an ability of additional caching of rendering result to fill it up with changed data? Is there an ability to render/store(cache) form by parts? Can you advice in additional rendering speed-up?
Reply | Threaded
Open this post in threaded view
|

Re: Big form rendering

Erik Bruchez
Administrator
Questions:

* What version of OF are you using?
* How slow is the rendering?
* Does your form have multiple "pages", only few of which (or just  
one) being visible at a time?

A while ago we devised something called "relevance optimization". The  
idea was to avoid creating certain subtrees of large forms spread over  
multiple pages, where most pages are non-relevant. We've had quite a  
bit of luck with this, but we would have to check whether this still  
works properly with the post-beta1 changes. Still, it may be something  
you could try. Check the relevance optimization property in  
properties.xml.

-Erik

On Aug 28, 2008, at 6:05 AM, Lark wrote:

>
> Can you advice me, is there an ability to speed-up XForm rendering?  
> I have a
> huge form (page can be divided by more or less individual sections of
> controls, but the instance must be one), so it takes a lot of time  
> to open
> it. I have tried increasinng caches in configs, but it had very little
> effect.
> Is there an ability of additional caching of rendering result to  
> fill it up
> with changed data? Is there an ability to render/store(cache) form  
> by parts?
> Can you advice in additional rendering speed-up?
> --
> View this message in context: http://www.nabble.com/Big-form-rendering-tp19200109p19200109.html
> Sent from the ObjectWeb OPS - Users mailing list archive at  
> Nabble.com.
>
>
> --
> You receive this message as a subscriber of the [hidden email]  
> mailing list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Big form rendering

Lark
Thank You for reply!
I am using Orbeon 3.6.0.200806172336 with JBoss 4.2.2 under Debian-64bit on dual Opteron 265D system.
The form rendering time is 8..10 seconds (according to logs - calls to xforms-renderer).
The page have many invisible parts (divs/table rows mostly, with a lot of input fields) and user can toggle visibility.
I have tried to turn on relevance optimization in Orbeon properties, but it has no effect on speed.
Andrey
Reply | Threaded
Open this post in threaded view
|

Re: Re: Big form rendering

Erik Bruchez
Administrator
Wow, that is a very long time. Relevance optimization won't work if  
you just use switch/case at the moment.

What I would advise is the following: replace using switch/case with  
groups, and use relevance. E.g.:

<xf:group ref=".[instance('page-number') = 1]"> ...
<xf:group ref=".[instance('page-number') = 2]"> ...
<xf:group ref=".[instance('page-number') = 3]"> ...

and see if this improves performance w/ relevance optimization.

Also, do you have any (or lots) of insert/delete instance replacements  
running during initialization?

-Erik

On Aug 29, 2008, at 4:00 AM, Lark wrote:

>
> Thank You for reply!
> I am using Orbeon 3.6.0.200806172336 with JBoss 4.2.2 under  
> Debian-64bit on
> dual Opteron 265D system.
> The form rendering time is 8..10 seconds (according to logs - calls to
> xforms-renderer).
> The page have many invisible parts (divs/table rows mostly, with a  
> lot of
> input fields) and user can toggle visibility.
> I have tried to turn on relevance optimization in Orbeon properties,  
> but it
> has no effect on speed.
> Andrey
> --
> View this message in context: http://www.nabble.com/Big-form-rendering-tp19200109p19217797.html
> Sent from the ObjectWeb OPS - Users mailing list archive at  
> Nabble.com.
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Big form rendering

Lark
I have no any switch/case-s in my form and I have usually one (some times more) instance replacement during initialization.
Is there some possibility to skip rendering of invisible parts during form opening and render them when some event happen?
Reply | Threaded
Open this post in threaded view
|

Re: Re: Big form rendering

Lark
We thought about the following way for optimization: generated HTML is cached in the system, when user load Xform again, the system gives HTML and after HTML loaded to the browser - it's loads model from the server and updates controls. Is this approach could be applied in Orbeon?
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Big form rendering

Alessandro Vernet
Administrator
In reply to this post by Lark
On Wed, Sep 3, 2008 at 3:48 AM, Lark <[hidden email]> wrote:
> I have no any switch/case-s in my form and I have usually one (some times
> more) instance replacement during initialization.
> Is there some possibility to skip rendering of invisible parts during form
> opening and render them when some event happen?

If you are doing those instance replacement on xforms-ready, you might
instead want to do them on xforms-model-construct-done.

Alex
--
Orbeon Forms - Web 2.0 Forms, open-source, for the Enterprise
Orbeon's Blog: http://www.orbeon.com/blog/
Personal Blog: http://avernet.blogspot.com/
Twitter - http://twitter.com/avernet



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Big form rendering

Alessandro Vernet
Administrator
In reply to this post by Lark
On Wed, Sep 3, 2008 at 8:31 AM, Lark <[hidden email]> wrote:
> We thought about the following way for optimization: generated HTML is cached
> in the system, when user load Xform again, the system gives HTML and after
> HTML loaded to the browser - it's loads model from the server and updates
> controls. Is this approach could be applied in Orbeon?

If what takes time is to loading of the instances, then yes, you might
want to serve the page right away to the user with no data, and then
trigger right away an event which will load the instances. At this
point, you can do this initial "event triggering after the page has
loaded" using a couple of lines of JavaScript. More on this here:

http://www.nabble.com/Bug-in-the-%3Cxforms%3Aload%3E-action-td18567468.html#a18623978

And we also have plans to add to XForms so you can do this entirely in
XForms.

Alex
--
Orbeon Forms - Web 2.0 Forms, open-source, for the Enterprise
Orbeon's Blog: http://www.orbeon.com/blog/
Personal Blog: http://avernet.blogspot.com/
Twitter - http://twitter.com/avernet



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Big form rendering

Erik Bruchez
Administrator
In reply to this post by Lark
> We thought about the following way for optimization: generated HTML  
> is cached
> in the system, when user load Xform again, the system gives HTML and  
> after
> HTML loaded to the browser - it's loads model from the server and  
> updates
> controls. Is this approach could be applied in Orbeon?


First, did you read my suggestion about using relevance optimization  
after modifying your use of switch/case to use relevant groups instead?

Second, your suggestion below is good in theory, but unfortunately  
that is not how the XForms engine works at the moment: the XForms  
engine must go through initialization, creation of XForms controls,  
and produce the resulting HTML. I can imagine how a similar approach  
could be made to work at some point, but I am not sure how much time  
it would get.

I would also suggest:

* Enabling XForms logging, which now produces some information about  
timings (and even more in recent builds), and see what comes out of it.

* Trying the few strategies outlined in this thread so far.

* Using a Java profiler (like YourKit) to find out where the time is  
spent.

-Erik

--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Big form rendering

Lark
Thank You for advice!
There is another issue with my form that influence speed in large scale. The size of HTML generated from the form is about 1,2 Mb and it is a big amount of data to download even for fast internet channel. Is there some way to reduce generated HTML size?
Andrey.
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Re: Big form rendering

Erik Bruchez
Administrator
Andrey,

First thing to do is making sure the HTML is getting gzipped. Also  
make sure you checked this page:

   http://www.orbeon.com/ops/doc/integration-tuning

-Erik

On Sep 8, 2008, at 5:51 AM, Lark wrote:

>
> Thank You for advice!
> There is another issue with my form that influence speed in large  
> scale. The
> size of HTML generated from the form is about 1,2 Mb and it is a big  
> amount
> of data to download even for fast internet channel. Is there some  
> way to
> reduce generated HTML size?
> Andrey.
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Re: Big form rendering

Lark
Thanks for advice!
Enable gzip compression in JBoss makes things faster.