--- /dev/null
+# -*-perl-*-
+# run with perl -d:DProf $0 ; dprofpp
+
+use strict;
+use POSIX qw(tmpnam);
+use File::Path qw(rmtree);
+use CGI::Ex::Template;
+#use CGI::Ex::Template_60;
+
+my $tt_cache_dir = tmpnam;
+END { rmtree $tt_cache_dir };
+mkdir $tt_cache_dir, 0755;
+
+my $cet = CGI::Ex::Template->new(ABSOLUTE => 1);
+#use Template;
+#my $cet = Template->new(ABSOLUTE => 1);
+
+###----------------------------------------------------------------###
+
+my $swap = {
+ one => "ONE",
+ two => "TWO",
+ three => "THREE",
+ a_var => "a",
+ hash => {a => 1, b => 2, c => { d => ["hmm"] }},
+ array => [qw(A B C D E a A)],
+ code => sub {"($_[0])"},
+ cet => $cet,
+};
+
+my $txt = '';
+$txt .= "[% one %]\n";
+$txt .= ((" "x1000)."[% one %]\n")x100;
+$txt .= "[%f=10; WHILE (g=f) ; f = f - 1 ; f ; END %]";
+$txt .= ("[% \"".(" "x10)."\$one\" %]\n")x1000;
+
+my $file = \$txt;
+
+if (1) {
+ $file = $tt_cache_dir .'/template.txt';
+ open(my $fh, ">$file") || die "Couldn't open $file: $!";
+ print $fh $txt;
+ close $fh;
+}
+
+###----------------------------------------------------------------###
+
+sub cet {
+ my $out = '';
+ $cet->process($file, $swap, \$out);
+ return $out;
+}
+
+cet() for 1 .. 500;