[PATCH] Remove unnecessary dir()/set() calls in Template.__init__()

R. Tyler Ballance <[email protected]> Mon, 12 Oct 2009 23:53:58 -0700
Newsgroups gmane.comp.python.cheetah
Message-ID <20091013065358.GC9649@banana>
When running cheetah.Tests.Performance.DynamicMethodCompilationTest
with 100000 iterations set, Template.__init__() is the most performance
sensitive call.

Prior to this commit:
    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    100000   12.558    0.000   15.274    0.000 Template.py:1025(__init__)

After this commit:
    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    100000    1.263    0.000    3.541    0.000 Template.py:1025(__init__)

That code need not execute every time __init__ is called
---
 cheetah/Template.py |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/cheetah/Template.py b/cheetah/Template.py
index 01cf676..c903460 100644
--- a/cheetah/Template.py
+++ b/cheetah/Template.py
@@ -1213,11 +1213,10 @@ class Template(Servlet):
         ##################################################           
         ## Setup instance state attributes used during the life of template
         ## post-compile
-        reserved_searchlist = dir(self)
         if searchList:
             for namespace in searchList:
                 if isinstance(namespace, dict):
-                    intersection = set(reserved_searchlist) & set(namespace.keys())
+                    intersection = Reserved_SearchList & set(namespace.keys())
                     warn = False
                     if intersection:
                         warn = True
@@ -1832,7 +1831,7 @@ class Template(Servlet):
         return dic
 
 T = Template   # Short and sweet for debugging at the >>> prompt.
-
+Reserved_SearchList = set(dir(Template))
 
 def genParserErrorFromPythonException(source, file, generatedPyCode, exception):
 
-- 
1.6.5

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference

_______________________________________________
Cheetahtemplate-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss
signature.asc (application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)

iEYEARECAAYFAkrUJAYACgkQFCbH3D9R4W8vNgCfYa9ZNml76I7NTcj6ZZVz2SID
E7UAn3hxXBCENxnlPSbG7407soYV5z/Z
=pO1R
-----END PGP SIGNATURE-----