Hi there,
I am using Orbeon 3.8 on Tomcat 6, we have a own Toolkit where we create FormRunner compatible forms. As long as the forms are not to big (in means of number of controls/fields on it) it works like a charm. however when its a big form it takes up to 10seconds to validate a constraint on a value that was entered in a field (timed with firebug) I am switching on/off orbeon logging to see where it spends its time, and I hope to find the solution, first impression of what I think I see that it is just validating all the constraints/relevances and that takes time..... ....but I also hope somebody here can give me a push in the right direction where to look, maybe things like caching or jvm settings?? let me know if its any help if I attach one of my big forms. regards Ramon |
Administrator
|
Ramon,
There are some general notes on performance here, in case you haven't read that: http://wiki.orbeon.com/forms/doc/developer-guide/admin/performance-tuning http://wiki.orbeon.com/forms/doc/developer-guide/xforms-performance-settings Are you using PE? I can't tell whether this would help for sure, but in PE there is an XPath dependency engine which is meant (in part) to reduce the time spent recomputing everything. I hope this helps, -Erik On Thu, Aug 4, 2011 at 10:54 PM, Ramon de Beijer <[hidden email]> wrote: > Hi there, > > I am using Orbeon 3.8 on Tomcat 6, we have a own Toolkit where we create > FormRunner compatible forms. > As long as the forms are not to big (in means of number of controls/fields > on it) it works like a charm. > > however when its a big form it takes up to 10seconds to validate a > constraint on a value that was entered in a field (timed with firebug) I am > switching on/off orbeon logging to see where it spends its time, and I hope > to find the solution, first impression of what I think I see that it is just > validating all the constraints/relevances and that takes time..... > > ....but I also hope somebody here can give me a push in the right direction > where to look, maybe things like caching or jvm settings?? > > let me know if its any help if I attach one of my big forms. > > regards Ramon > > -- > View this message in context: http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p3720486.html > Sent from the Orbeon Forms (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 > > -- 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 |
Hi,
> http://wiki.orbeon.com/forms/doc/developer-guide/xforms-performance-setting > s Speaking of xxforms:read-only, the bug that calling xxforms:element with nodes from an xxforms:read-only instance returns an empty element is still present in Orbeon 3.9 (to be more precise, in 3be01f0bcad). Kind regards, Ralf -- 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 |
Administrator
|
Ralf,
That's right, I don't think this has been fixed yet. One thought on this: I think that the xforms;insert action does support this. xxforms:elementI() should use the same code. -Erik On Tue, Aug 9, 2011 at 3:14 AM, Ralf Jung <[hidden email]> wrote: > Hi, > >> http://wiki.orbeon.com/forms/doc/developer-guide/xforms-performance-setting >> s > Speaking of xxforms:read-only, the bug that calling xxforms:element with nodes > from an xxforms:read-only instance returns an empty element is still present > in Orbeon 3.9 (to be more precise, in 3be01f0bcad). > > Kind regards, > Ralf > > > -- > 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 > > -- 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 |
Hi Erik,
> That's right, I don't think this has been fixed yet. > > One thought on this: I think that the xforms;insert action does > support this. xxforms:elementI() should use the same code. That was a good hint, I think I fixed it... at least, my usecase is now working here. Attached you can find the patches against Orbeon 3.9 and against current master. Kind regards, Ralf -- 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-3.9_fix-xxforms-element-on-read-only-instances.patch (6K) Download Attachment orbeon-master_fix-xxforms-element-on-read-only-instances.patch (6K) Download Attachment |
In reply to this post by Erik Bruchez
Hi all,
I still have performance issues in Orbeon 3.8 with large forms. Just retrieving the page, tested with a wget command to make sure the browser is not a bottleneck, takes around 20 seconds and sometimes up to more then a minute. Filling in the first field, and tabbing to the next field triggers a validation on the first field (showing the 'loading' in the top) this validation takes anywhere between 5 and 10 seconds. As you can imagine, those response times are not really user friendly, I attached one of the big forms we have build. We are running on Tomcat 6.0.18, Orbeon 3.8 PE (also tried this form on Orbeon 3.9 PE, almost no difference in performance) Startup settings: -XX:MaxPermSize=1024m -Xmx1024 Does anybody has suggestions how we can speedup things, maybe we should buildup our forms differently? Please dont just give the answer migrated to 3.9 because thats not the solution, as I tested the form also in Orbeon 3.9 and no big differences were noticable. Unless you have some metrics prooving that Orbeon 3.9 with the new ehcache can speed things up? regards Ramonexample_big_form.xml |
Ramon,
I had similar performance related issues when designing a large tabbed form. The only way I was able to keep the page load time in check was to use a separate xform/page for each tab. So, as opposed to the tab switching occurring on the client, it submits the form back and re-renders the page with the new active tab. I then only render the portion of the page specific to that tab (bind/controls/etc...). That page submit process is still slow (1-3 seconds), but I know longer find that my page grinds down to a halt everytime a validation check is performed. In general, I find that bindings slow down the page immensely, so I only create bindings when I have to. For instance, if I have a readonly field, instead of generating an xforms:input and binding, I simply output the value without any control. Or, if the datatype is xs:string, and its not required, then I'll create the input control without the binding. The only other thing that I can think of is to verify that the xpath expressions that you use aren't doing anything expensive. I see that you use the wildcard a lot in your expressions. I can't say that I've ever used it, so I don't know what kind of impact it may have, if any. Jeremy Nix Senior Application Developer Cincinnati Children's Hospital Medical Center On 10/14/2011 02:57 AM, Ramon de Beijer wrote: Hi all, I still have performance issues in Orbeon 3.8 with large forms. Just retrieving the page, tested with a wget command to make sure the browser is not a bottleneck, takes around 20 seconds and sometimes up to more then a minute. Filling in the first field, and tabbing to the next field triggers a validation on the first field (showing the 'loading' in the top) this validation takes anywhere between 5 and 10 seconds. As you can imagine, those response times are not really user friendly, I attached one of the big forms we have build. We are running on Tomcat 6.0.18, Orbeon 3.8 PE (also tried this form on Orbeon 3.9 PE, almost no difference in performance) Startup settings: -XX:MaxPermSize=1024m -Xmx1024 Does anybody has suggestions how we can speedup things, maybe we should buildup our forms differently? Please dont just give the answer migrated to 3.9 because thats not the solution, as I tested the form also in Orbeon 3.9 and no big differences were noticable. Unless you have some metrics prooving that Orbeon 3.9 with the new ehcache can speed things up? regards Ramon http://orbeon-forms-ops-users.24843.n4.nabble.com/file/n3903972/example_big_form.xml example_big_form.xml -- View this message in context: http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p3903972.html Sent from the Orbeon Forms (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 |
In reply to this post by Ramon de Beijer
Hi Ramon,
Wow, and I thought that 3500 lines of formcode was a big form! 30.000 lines of code, i'm afraid serious refactoring is required. It also looks like there are lots and lots of xpath expressions that have to be evaluated, these could be the cause of the long load time. You have to avoid joining datasets in the form, this is a slow operation. If you need to join datasets, do it in the database and retrieve the result for use in the form. Regards, Gerrit On Oct 14, 2011, at 8:57 AM, Ramon de Beijer wrote: http://orbeon-forms-ops-users.24843.n4.nabble.com/file/n3903972/example_big_form.xml -- 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 |
hi Gerrit,
I do admit that the number of lines is a bit large ;-) and i guess I can certainly try and clean up the code so less lines are generated. not sure what you mean with "If you need to join datasets, do it in the database and retrieve the result for use in the form" regards Ramon |
Hi Ramon,
Let me put it another way. If you need to do a lot of 'look ups', like getting the name for an id. For instance, if there are lots of records with only a person id in them and you need get the person name for that id (for each record) than that should be handled in the database and not in the form. Regards, Gerrit On Oct 14, 2011, at 2:01 PM, Ramon de Beijer wrote: > hi Gerrit, > > I do admit that the number of lines is a bit large ;-) and i guess I can > certainly try and clean up the code so less lines are generated. > not sure what you mean with "If you need to join datasets, do it in the > database and retrieve the result for use in the form" > > regards Ramon > > -- > View this message in context: http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p3904599.html > Sent from the Orbeon Forms (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 -- 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 |
Administrator
|
This is an interesting one.
For sure the form is on the large side, with 31,777 lines of XML. Also, I count, at first glance: * 1560 binds * 348 select1 * 522 inputs * 32 textarea * 2778 output (most if not all text/html) This said, I find a couple of interesting hot spots with the profiler (using our latest code): * when the page is produced, there is a very large number of lookups in maps, amounting for about 50% of the load time * upon Ajax requests, the same occurs for about maybe 75% of the load time Both are related to evaluating XPath expressions and dealing with XPath variables. The good news is that I think this code can be greatly improved. Another way to tackle this would be to look at whether the number of controls and/or XPath expressions in the form can be reduced. Finally, since the form only shows a pretty small amount of data on screen at a given time, I am thinking that more optimizations are possible, whether at the XForms engine level or by working on the form itself. -Erik On Fri, Oct 14, 2011 at 5:59 AM, Gerrit Boers <[hidden email]> wrote: > Hi Ramon, > > Let me put it another way. If you need to do a lot of 'look ups', like getting the name for an id. > For instance, if there are lots of records with only a person id in them and you need get the person name for that id (for each record) than that should be handled in the database and not in the form. > > Regards, > > Gerrit > > On Oct 14, 2011, at 2:01 PM, Ramon de Beijer wrote: > >> hi Gerrit, >> >> I do admit that the number of lines is a bit large ;-) and i guess I can >> certainly try and clean up the code so less lines are generated. >> not sure what you mean with "If you need to join datasets, do it in the >> database and retrieve the result for use in the form" >> >> regards Ramon >> >> -- >> View this message in context: http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p3904599.html >> Sent from the Orbeon Forms (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 > > > > -- > 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 > > -- 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 |
Hi Eric,
Tnx for the summary, wanted to make the count myself but now if have got the figures :-) * when the page is produced, there is a very large number of lookups in maps, amounting for about 50% of the load time * upon Ajax requests, the same occurs for about maybe 75% of the load time >> do you mean the $variables here? or constructions like .. and . * The good news is that I think this code can be greatly improved. >> do you mean I can improve the xhtml or that Orbeon can improve the javacode? >> if you mean the xhtml could you give me some directions where to start? Finally, since the form only shows a pretty small amount of data on screen at a given time, I am thinking that more optimizations are possible, whether at the XForms engine level or by working on the form itself. >> we already thought that we might had to look into splitting up the page, but saying that is more easy then actually building it. Do you an idea/example how to split these pages up. regards Ramon |
Administrator
|
Ramon,
>>> do you mean the $variables here? or constructions like .. and . It's for every XPath expression lookup (compiled expressions are cached). > * The good news is that I think this code can be greatly improved. >>> do you mean I can improve the xhtml or that Orbeon can improve the >>> javacode? Here I mean in the Java code. I am, maybe naively, hoping to have a look at this this week. >>> if you mean the xhtml could you give me some directions where to start? > > Finally, since the form only shows a pretty small amount of data on screen > at a given time, I am thinking that more optimizations are possible, whether > at the XForms engine level or by working on the form itself. >>> we already thought that we might had to look into splitting up the page, >>> but saying that is more easy then actually building it. Do you an >>> idea/example how to split these pages up. Not instantly. I haven't analyzed your form as that might take a while. Do you use relevance to hide/show the different tabs? -Erik -- 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 |
Ramon,ok so is there anything I can do for this? Like instead of using $variabele using the complete path like forminstance/aaa/bbb/variable haha I know the feeling Yer we use relevance to hide show tabs with help of css (we use groups instead of tabview)
|
Administrator
|
> It's for every XPath expression lookup (compiled expressions are cached).
> > ok so is there anything I can do for this? Like instead of using $variabele > using the complete path like forminstance/aaa/bbb/variable I doubt that this will help. > Yer we use relevance to hide show tabs with help of css (we use groups > instead of tabview) I guess things like: <xforms:group id="Uw_gegevens-section" class="tab-{if(xxforms:instance('fr-form-instance')/tab_nav/tab_1='true()') then 'visible' else 'hidden'}"> What if you change things to look like: <xforms:group id="Uw_gegevens-section" ref=".[xxforms:instance('fr-form-instance')/tab_nav/tab_1='true()']"> This uses relevance to hide the content of the group instead of CSS. -Erik -- 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 |
if other people also have this problem, thanks to a tip from Erik we were able to speedup the performance with a big step forward.
The trick is to be careful with giving every bind a name, in our case we only give the binds that are referenced by $bindname a name property (for example in relevance or calculate attributes of other binds) this speeds up the loading of the form and the loading action after tabbing out of a control dramatically. the snippet from Erik's mail: Now there might be a workaround that might help: in your form, on <xforms:bind> elements, you will notice all the @name attributes. Those expose bind as variables. It is likely that few or none of those are actually needed by your form. So you could try to remove all those bind/@name attributes and see if your form runs faster. That would be something to try. tnx again Erik |
Administrator
|
Ramon,
Glad this helped! Note that this is typically related to Form Builder-generated forms. Form Builder places a name attribute on every bind. If you have hundreds or thousands of those, you can hit performance issues. We have a pretty good idea of why this is happening, and hope to resolve this soon. -Erik On Tue, Nov 15, 2011 at 9:53 PM, Ramon de Beijer <[hidden email]> wrote: > if other people also have this problem, thanks to a tip from Erik we were > able to speedup the performance with a big step forward. > > The trick is to be careful with giving every bind a name, in our case we > only give the binds that are referenced by $bindname a name property (for > example in relevance or calculate attributes of other binds) > this speeds up the loading of the form and the loading action after tabbing > out of a control dramatically. > > the snippet from Erik's mail: > Now there might be a workaround that might help: in your form, on > <xforms:bind> elements, you will notice all the @name attributes. > Those expose bind as variables. It is likely that few or none of those > are actually needed by your form. So you could try to remove all those > bind/@name attributes and see if your form runs faster. That would be > something to try. > > > tnx again Erik > > -- > View this message in context: http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p4075424.html > Sent from the Orbeon Forms (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 > > -- 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 |
We have our own "form-builder" but we render our forms to be as much as possible form-runner compatible so we can use the form-runner environment regards Ramon On 11/16/2011 07:10 AM, Erik Bruchez [via Orbeon Forms (ops-users)] wrote: Ramon, |
Administrator
|
Ramon,
Got it, thanks for sharing. -Erik On Tue, Nov 15, 2011 at 10:16 PM, Ramon de Beijer <[hidden email]> wrote: > Hi Erik, > > We have our own "form-builder" but we render our forms to be as much as > possible form-runner compatible so we can use > the form-runner environment > > regards Ramon > > On 11/16/2011 07:10 AM, Erik Bruchez [via Orbeon Forms (ops-users)] wrote: > > Ramon, > > Glad this helped! > > Note that this is typically related to Form Builder-generated forms. > Form Builder places a name attribute on every bind. If you have > hundreds or thousands of those, you can hit performance issues. We > have a pretty good idea of why this is happening, and hope to resolve > this soon. > > -Erik > > On Tue, Nov 15, 2011 at 9:53 PM, Ramon de Beijer > <[hidden email]> wrote: >> if other people also have this problem, thanks to a tip from Erik we were >> able to speedup the performance with a big step forward. >> >> The trick is to be careful with giving every bind a name, in our case we >> only give the binds that are referenced by $bindname a name property (for >> example in relevance or calculate attributes of other binds) >> this speeds up the loading of the form and the loading action after >> tabbing >> out of a control dramatically. >> >> the snippet from Erik's mail: >> Now there might be a workaround that might help: in your form, on >> <xforms:bind> elements, you will notice all the @name attributes. >> Those expose bind as variables. It is likely that few or none of those >> are actually needed by your form. So you could try to remove all those >> bind/@name attributes and see if your form runs faster. That would be >> something to try. >> >> >> tnx again Erik >> >> -- >> View this message in context: >> http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p4075424.html >> Sent from the Orbeon Forms (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 >> >> > > -- > 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 > > > ________________________________ > If you reply to this email, your message will be added to the discussion > below: > http://orbeon-forms-ops-users.24843.n4.nabble.com/speedup-Orbeon-tp3720486p4075439.html > To unsubscribe from speedup Orbeon, click here. > NAML > > ________________________________ > View this message in context: Re: speedup Orbeon > Sent from the Orbeon Forms (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 > > -- 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 |
Free forum by Nabble | Edit this page |