Here are some things you can do to make your templates fill faster and user fewer CPU cycles. Before you put a lot of energy into this, however, make sure you really need to. In many situations, templates appear to initialize and fill instantaneously, so no optimization is necessary. If you do find a situation where your templates are filling slowly or taking too much memory or too many CPU cycles, we'd like to hear about it on the mailing list.
Cache $placeholders whose values don't change frequently. (Section 7.4).
Use #set
for values that are very frequently used, especially if they
come out of an expensive operation like a deeply.nested.structure or a database
lookup. #set
variables are set to Python local variables, which have a
faster lookup time than Python globals or values from Cheetah's searchList.
Moving variable lookups into Python code may provide a speedup in certain
circumstances. If you're just reading self
attributes, there's no
reason to use NameMapper lookup ($placeholders) for them. NameMapper does
a lot more work than simply looking up a self
attribute.
On the other hand, if you don't know exactly where the value will come from
(maybe from self
, maybe from the searchList, maybe from a CGI input
variable, etc), it's easier to just make that an argument to your method, and
then the template can handle all the NameMapper lookups for you:
#silent $myMethod($arg1, $arg2, $arg3)
self.getVar('arg1')
etc in your
method, which is more wordy, and tedious.