#!/usr/bin/perl use strict; use warnings; use lib '../lib'; use HTML::Template; # this is a little script I use to test the timing behavior of various # options in HTML::Template;; # an array of template files to test against and params to fill in my %templates = ( simple => ['templates/simple.tmpl', {}], include => ['templates/include.tmpl'], medium => [ 'templates/medium.tmpl', { 'ALERT' => 'I am alert.', 'COMPANY_NAME' => "MY NAME IS", 'COMPANY_ID' => "10001", 'OFFICE_ID' => "10103214", 'NAME' => 'SAM I AM', 'ADDRESS' => '101011 North Something Something', 'CITY' => 'NEW York', 'STATE' => 'NEw York', 'ZIP' => '10014', 'PHONE' => '212-929-4315', 'PHONE2' => '', 'SUBCATEGORIES' => 'kfldjaldsf', 'DESCRIPTION' => "dsa;kljkldasfjkldsajflkjdsfklfjdsgkfld\nalskdjklajsdlkajfdlkjsfd\n\talksjdklajsfdkljdsf\ndsa;klfjdskfj", 'WEBSITE' => 'http://www.assforyou.com/', 'INTRANET_URL' => 'http://www.something.com', 'REMOVE_BUTTON' => "", 'COMPANY_ADMIN_AREA' => "Manage Office Administrators", 'CASESTUDIES_LIST' => "adsfkljdskldszfgfdfdsgdsfgfdshghdmfldkgjfhdskjfhdskjhfkhdsakgagsfjhbvdsaj hsgbf jhfg sajfjdsag ffasfj hfkjhsdkjhdsakjfhkj kjhdsfkjhdskfjhdskjfkjsda kjjsafdkjhds kjds fkj skjh fdskjhfkj kj kjhf kjh sfkjhadsfkj hadskjfhkjhs ajhdsfkj akj fkj kj kj kkjdsfhk skjhadskfj haskjh fkjsahfkjhsfk ksjfhdkjh sfkjhdskjfhakj shiou weryheuwnjcinuc 3289u4234k 5 i 43iundsinfinafiunai saiufhiudsaf afiuhahfwefna uwhf u auiu uh weiuhfiuh iau huwehiucnaiuncianweciuninc iuaciun iucniunciunweiucniuwnciwe", 'NUMBER_OF_CONTACTS' => "aksfjdkldsajfkljds", 'COUNTRY_SELECTOR' => "klajslkjdsafkljds", 'LOGO_LINK' => "dsfpkjdsfkgljdsfkglj", 'PHOTO_LINK' => "lsadfjlkfjdsgkljhfgklhasgh", } ], long_loop => ['templates/long_loops.tmpl', {}], loop_if => ['templates/loop-if.tmpl', {LOOP_ONE => [{VAR => 'foo'}]}] ); # a hash of option hashes to test my %options = ( 'no cache' => {}, #'simple cache' => { cache => 1 }, # 'shared cache' => { shared_cache => 1, cache => 1 }, 'file cache' => { file_cache => 1, file_cache_dir => './file_cache' }, # 'simple cache, no_includes' => { cache => 1, no_includes => 1}, # 'blind cache' => { blind_cache => 1}, ); # number of times over each template my $n = 100; #open(OUT, ">test.out"); foreach my $template (keys %templates) { print "\nTESTING : $template : $n iterations\n\n"; foreach my $option (keys %options) { my $start_time = (times)[0]; for (my $x = 0 ; $x < $n ; $x++) { my $template = HTML::Template->new( filename => $templates{$template}->[0], %{$options{$option}} ); foreach my $name (keys %{$templates{$template}->[1]}) { $template->param($name => $templates{$template}->[1]->{$name}); } my $result = $template->output; #print OUT $result; #$template->output(print_to => *OUT); } my $end_time = (times)[0]; print "$option : average iteration in " . (($end_time - $start_time) / $n) . " seconds\n"; } }