Re: Optimising #include creation of FastWriter
Endre Stølsvik <[email protected]> Fri, 17 Mar 2006 12:23:34 +0100 (CET)
| Newsgroups | gmane.comp.java.webmacro.user |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 13 Mar 2006, Alex Twisleton-Wykeham-Fiennes wrote:
| >
| > I do it using _a new_ FastWriter with a temporary backing, then if
| > everything went right, I put the result to the FastWriter.
|
| Do you use a seperate Context for each portlet as well?
Yes.
But assuming that the Portlets aren't _pure_ evil, this would have been a
big thing: I could just have recreated the initial state before each
rendering, by using a "weird-long-named" context-var for "my state",
hoping that the corelet wouldn't intentially mess things up.
But I do make a new Context, due to this concern.
|
| > This temporary backing paradigm obviously isn't the best, and a
| > mark/reset/flush paradigm would be much better for my part.
|
| I can see where you are coming from on this, but it is very hard to state what
| the side effects of flushing the FastWriter early and / or rolling it back to
| an earlier state.
Why is that? This seems completely illogical to me, I can't see at all
where you're coming from.
If I still make new Contexts, and you understand that each portlet is "on
its own" (with a logical separate context too), and if I don't commit
bytes to the browser-stream before flush, then "rolling back" is _exactly_
the same as ditching the buffer, _as I do now_.
| I think that any such mechanism would need to be integrated with the
| same ability on the Context that was being used as well for it to be
| safe.
Make a new one?!
.. or as suggested above.
|
| However, my gut reaction from the profiling that I've done suggests that if
| what you are after is maximum performance from your system then the best way
| of evaluating your portlets would be:-
|
| #foreach $portlet in $portlets {
| #include as template "$portlet.prepareView"
| }
Of course - which can't contain errors.
|
| where the $portlet.prepareView prepares all the necessary state information
| associated with the current view. If this all goes smoothly in javaspace
| then it returns the path to the standard view of the portlet, otherwise it
| returns the path to the error template.
People don't program fantastic code. Suddenly, some method returns null.
Suddenly, some seldom-used if-case kicks in, and everything goes haywire.
I really can't understand why my needs are so non-understandable?!
I am not constructing some obscure use-case here: This "damage control" is
what I do now, I'd just like to have a more optimized way of doing it
using the features that actually are present in the fastwriter already.
|
| I would highly recommend getting hold of a copy of OptimizeIt and actually
| benchmarking the performance of your portlet application before embarking on
| refactoring the FastWriter in such a manner.
I use JProfiler, but thanks for the tip.
Endre
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642