Hakim Cassimally wrote:
> Hi,
> 
> We're having an "interesting" problem with a significant slowdown in
> processing of some HTML::Template templates.

The current suspicion, after HTML bod and $boss worked on this,
by a process of elimination is that the problem is when the same
data structure is used twice in the same ->output() call.

So, in some cases, the loop "REGION" below, was used twice in
two separate TMPL_LOOP cases.  This seems to add as much as
0.5 seconds every time the parameter is reused.

The workaround seems to be to clone the data structure and
create two separate parameters, which seems very wrong.  Has
anyone else experienced this?  (It might be a feature of our
framework code rather than H::T, I'll work on the minimal test
case on Friday after a release...)

Cheerio,
Hakim

> We are using:
>   - using H::T 2.8 and 2.9
>   - an house framework that feeds params from a CGI object to H::T
>   - CGI 2.81 and 3.15
>   - Perl 5.8.0 and 5.8.4
> 
> If the following conditions hold:
> 
>   - template X is <TMPL_INCL>uded
>   - the parameter "region" is set (for <TMPL_LOOP NAME="REGION">)
> 
> then processing time for the template is approx 1 second longer.
> 
> However
> 
>   - if either the TMPL_INCL or the TMPL_LOOPs are commented, processing
>     time is reduced
>   - the TMPL_INCL does *not* refer to the TMPL_LOOP, and neither does the
>     one template it in turn includes.
> 
> The DProf runs include the following (with some entries for BEGIN on
> inhouse modules removed) :
> 
> --------------- without including TMPL_LOOP
> 
> $ dprofpp -rI 
> province_noprov.out
> Total Elapsed Time = 1.346560 Seconds
>           Real Time = 1.346560 Seconds
> Inclusive Times
> %Time ExclSec CumulS #Calls sec/call Csec/c  Name
>   65.7   0.030  0.885      5   0.0060 0.1770  main::BEGIN
>   43.8   0.008  0.590      1   0.0083 0.5899  Our::Application::pageOutput
>   43.8   0.000  0.590      1   0.0000 0.5897 
> Our::Application::printPageOutput
>   9.43   0.050  0.127     78   0.0006 0.0016  HTML::Template::BEGIN
>   8.69   0.000  0.117    539   0.0000 0.0002  JSON::Parser::value
>   8.24   0.120  0.111   9267   0.0000 0.0000  HTML::Template::param
>   7.28   0.000  0.098      2   0.0000 0.0488  HTML::Template::_init
> 
> --------------- with the TMPL_LOOP
> 
> $ dprofpp -rI 
> province_prov.out
> Total Elapsed Time = 2.443450 Seconds
>           Real Time = 2.443450 Seconds
> Inclusive Times
> %Time ExclSec CumulS #Calls sec/call Csec/c  Name
>   109.   1.149  2.676    387   0.0030 0.0069  HTML::Template::BEGIN
>   76.8   0.000  1.877      1   0.0000 1.8765 
> Our::Application::printPageOutput
>   76.4   0.027  1.867      1   0.0275 1.8668  Our::Application::pageOutput
>   55.5   0.010  1.356      8   0.0012 0.1696  HTML::Template::LOOP::output
>   34.9   0.020  0.853      5   0.0040 0.1705  main::BEGIN
>   10.4   0.300  0.256  28736   0.0000 0.0000  HTML::Template::param
> 
> e.g. the odd things include
> 
> - "HTML::Template::BEGIN" is called a large number of times.  I don't
>    see that many BEGIN { } or 'use' blocks in the H::T code, nor do I
> understand why they would be called because of a TMPL_INCL
> 
> - HTML::Template::LOOP::output takes proportionally much longer.
> 
> I'm sorry that this isn't a minimal test case - I'm working with our
> HTML editor to try to identify what it is!  But if anyone has any
> suggestions on where to start trying to debug this, I'd be interested,
> and grateful, to see what you suggest.
> 
> Regards,
> 
> Hakim (osfameron)

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Html-template-users mailing list
Html-template-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/html-template-users

Reply via email to