We have a similiar application architecture, pages with a lot of ajax 
components, biggest page reloading takes ~ 5s.

Michael, make sure you don't have a debug enabled on the root logger, it could 
slow things down.

System.out.println(org.slf4j.LoggerFactory.getLogger("xyz123abcRandomLogger").isDebugEnabled());
 - should return false.

Denis

Jan 10, 2013 v 9:57 AM, Michael Wyraz <michael.wy...@evermind.de>:

> I did some further tests on a machine with SSD+HDD, 12 Core  CPU, 32GB RAM.
> I testet with the biggest page I found, log-level "warn".
> The page always needs ~55 seconds to load after webapp start and after page 
> modification. There's no difference if it's loaded from SSD or from HDD.
> During assembly, one core has a load of 80-90%, a second about 20-40%. The 
> other cores are idle.
> 
> The page itself requires ~30 seconds to assemble. But it links to a similar 
> big page (using linkSource.createPageRenderLinkWithContext) - so this page is 
> assebled too. If I change something in the first page, both pages are 
> re-assembled on next reload. This doubles the reload time. An alternative 
> would be to create the link without accessing the other page - but then I 
> would have to re-implememt stuff from linksource.
> 
> I have read (and thoght about) the suggestions from Thiago (splitting up 
> things to sub pages, look them up via link source). Probably this would solve 
> the issue but would be a deep impact in application design:
> The "big" page does not contain the whole application. It contains everything 
> to edit a (big) business entity and it's sub-entities. The screens are 
> separated in tabs, each contains a component which contains other components 
> like detail/wizard popups, slide-ins and so on. The logic for creating each 
> tab is within the responsible component (e.g. returning the name of the tab 
> or asking the backend to see if the user is allowed to see a certain tab). If 
> I separate the components to different pages and lookup/call the pages 
> dynamically, tapestry would still have to re-assemble them all on changes. To 
> avoid this, I'd move parts of the logic to the master page - which would 
> split UI logic across several pages.
> 
> 
> 
>> Interesting results, I hope to carve out some time to optimize that code in
>> some way. Perhaps some kind of development only cache that could remove
>> some of the overhead of analyzing parameter types and usage.
>> 
>> On Wednesday, January 9, 2013, Michael Wyraz wrote:
>> 
>>> Hi,
>>> 
>>> I had a closer look to the problem (reported by some of our developers):
>>> There are a few really big pages. Formerly these where separate pages but
>>> since we changed everything to ajax navigation, these pages are
>>> consolidated to one page. I tested everything on a machine that runs the
>>> workspace on a hardware raid on SSDs where IO performance should not be the
>>> problem at all. After starting the webapp, the first load of this page
>>> takes ~30 seconds. I changed tapestrys log level to "ALL" and restarted -
>>> the page load took >4 minutes and printed several 100.000 log lines. Most
>>> log lines (and probably most time) is in ParameterWorker. It takes about
>>> 90% of the component assembling time. Subsequent reloads take just a few
>>> milliseconds. After modifying the page, reload takes again >4 minutes with
>>> full debug.
>>> Most time is spend in ParameterWorker (logs from line 319, 329 and 340).
>>> Another place which takes lot time is Registry (logs from line 67 and 81).
>>> 
>>> Since the code in ParameterWorker is called some 100.000 or millions
>>> times, speedup there would bring a big performance plus.
>>> 
>>> But maybe there are other ways to improve performance?
>>> 
>>>  There are also a couple of performance tips at the very bottom of
>>>> http://tapestry.apache.org/**class-reloading.html<http://tapestry.apache.org/class-reloading.html>
>>>> 
>>>> On Mon, Jan 7, 2013 at 10:33 AM, Thiago H de Paula Figueiredo
>>>> <thiag...@gmail.com> wrote:
>>>> 
>>>>> On Mon, 07 Jan 2013 12:29:37 -0200, Michael Wyraz
>>>>> <michael.wy...@evermind.de> wrote:
>>>>> 
>>>>>  Hi,
>>>>> Hi!
>>>>> 
>>>>> 
>>>>>  we have a big project with Tapestry 5.3. There are many pages, lots of
>>>>>> components and many links between the pages (@Injects of other pages).
>>>>>> The problem is that after a change, the first page reload takes >5
>>>>>> seconds
>>>>>> on good hardware because there is much work for the tapestry page
>>>>>> compiler
>>>>>> which wastes much time of our developers.
>>>>>> 
>>>>> There isn't a Tapestry page compiler, just a template parser and some
>>>>> internal code that creates the page instances. There's no language
>>>>> transformation, so, for me, it isn't compiling at all.
>>>>> 
>>>>> The first thing I think you should do is to do some profiling and check
>>>>> whether these 5+ seconds are really all spent in Tapestry internals or if
>>>>> there's some application-specific processing going on (method calls,
>>>>> database queries, etc).
>>>>> 
>>>>> --
>>>>> Thiago H. de Paula Figueiredo
>>>>> 
>>>>> 
>>>>> ------------------------------**------------------------------**
>>>>> ---------
>>>>> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
>>>>> For additional commands, e-mail: dev-h...@tapestry.apache.org
>>>>> 
>>>>>  ------------------------------**------------------------------**
>>>> ---------
>>>> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
>>>> For additional commands, e-mail: dev-h...@tapestry.apache.org
>>>> 
>>>> 
>>> --
>>> Mit freundlichen Grüßen / Regards
>>> 
>>> Michael Wyraz
>>> 
>>> evermind GmbH
>>> Schorlemmerstraße 1
>>> 04155 Leipzig
>>> 
>>> Tel.:       +49 (0)341-25 39 66 - 0
>>> Fax:        +49 (0)341-25 39 66 - 1
>>> Funk:       +49 (0)177-73 00 00 3
>>> E-Mail:     michael.wy...@evermind.de
>>> 
>>> HRB: 21586
>>> Amtsgericht Leipzig
>>> 
>>> Geschäftsführer:
>>> Christoph Klemm
>>> Thomas Grünert
>>> Michael Wyraz
>>> 
>>> 
>>> ------------------------------**------------------------------**---------
>>> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: dev-h...@tapestry.apache.org
>>> 
>>> 
> 
> 
> -- 
> Mit freundlichen Grüßen / Regards
> 
> Michael Wyraz
> 
> evermind GmbH
> Schorlemmerstraße 1
> 04155 Leipzig
> 
> Tel.:       +49 (0)341-25 39 66 - 0
> Fax:        +49 (0)341-25 39 66 - 1
> Funk:       +49 (0)177-73 00 00 3
> E-Mail:     michael.wy...@evermind.de
> 
> HRB: 21586
> Amtsgericht Leipzig
> 
> Geschäftsführer:
> Christoph Klemm
> Thomas Grünert
> Michael Wyraz
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: dev-h...@tapestry.apache.org
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to