Rudimentary profiling for template toolkit
Version 1.00
Template::Timer provides inline timings of the template processing througout your code. It's an overridden version of Template::Context that wraps the \*(C`process()\*(C' and \*(C`include()\*(C' methods.
Using Template::Timer is simple.
use Template::Timer; my %config = ( # Whatever your config is INCLUDE_PATH => '/my/template/path', COMPILE_EXT => '.ttc', COMPILE_DIR => '/tmp/tt', ); if ( $development_mode ) { $config{ CONTEXT } = Template::Timer->new( %config ); } my $template = Template->new( \%config );
Now when you process templates, \s-1HTML\s0 comments will get embedded in your output, which you can easily grep for. The nesting level is also shown.
<!-- TIMER START: L1 process mainmenu/mainmenu.ttml --> <!-- TIMER START: L2 include mainmenu/cssindex.tt --> <!-- TIMER START: L3 process mainmenu/cssindex.tt --> <!-- TIMER END: L3 process mainmenu/cssindex.tt (17.279 ms) --> <!-- TIMER END: L2 include mainmenu/cssindex.tt (17.401 ms) -->
....
<!-- TIMER END: L3 process mainmenu/footer.tt (3.016 ms) --> <!-- TIMER END: L2 include mainmenu/footer.tt (3.104 ms) --> <!-- TIMER END: L1 process mainmenu/mainmenu.ttml (400.409 ms) -->
Note that since \s-1INCLUDE\s0 is a wrapper around \s-1PROCESS\s0, calls to INCLUDEs will be doubled up, and slightly longer than the \s-1PROCESS\s0 call.
Andy Lester, \*(C`<andy at petdance.com>\*(C'
Please report any bugs or feature requests to \*(C`bug-template-timer at rt.cpan.org\*(C', or through the web interface at <http://rt.cpan.org>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
Thanks to Randal Schwartz, Bill Moseley, and to Gavin Estey for the original code.
This library is free software; you can redistribute it and/or modify it under the terms of either the \s-1GNU\s0 Public License v3, or the Artistic License 2.0.
* http://www.gnu.org/copyleft/gpl.html
* http://www.opensource.org/licenses/artistic-license-2.0.php