Revision: 466
Author: allenb
Date: 2006-08-24 20:13:02 -0700 (Thu, 24 Aug 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=466&view=rev
Log Message:
-----------
- Attempt to fix some performance issues.
I didn't get much if anything out of this attempt, but I wanted to show everyone else what I tried. Once it has been examined, my
method (and commented out failed method) should be removed and replaced with a better way to do this.
Modified Paths:
--------------
pygccxml_dev/pygccxml/declarations/class_declaration.py
pygccxml_dev/pygccxml/declarations/declaration.py
Modified: pygccxml_dev/pygccxml/declarations/class_declaration.py
===================================================================
--- pygccxml_dev/pygccxml/declarations/class_declaration.py 2006-08-25 03:01:16 UTC (rev 465)
+++ pygccxml_dev/pygccxml/declarations/class_declaration.py 2006-08-25 03:13:02 UTC (rev 466)
@@ -101,21 +101,26 @@
self._private_members = []
self._protected_members = []
self._aliases = []
+ self.__cached_demangled_name = None # Cached value of name from get_name_impl
def _get_name_impl( self ):
if not self._name: #class with empty name
return self._name
- if class_t.USE_DEMANGLED_AS_NAME and self.demangled:
- fname = algorithm.full_name( self.parent )
- if fname.startswith( '::' ) and not self.demangled.startswith( '::' ):
- fname = fname[2:]
- if self.demangled.startswith( fname ):
- tmp = self.demangled[ len( fname ): ] #demangled::name
- if tmp.startswith( '::' ):
- tmp = tmp[2:]
- return tmp
+ elif class_t.USE_DEMANGLED_AS_NAME and self.demangled:
+ if self.__cached_demangled_name:
+ return self.__cached_demangled_name
else:
- return self._name
+ fname = algorithm.full_name( self.parent )
+ if fname.startswith( '::' ) and not self.demangled.startswith( '::' ):
+ fname = fname[2:]
+ if self.demangled.startswith( fname ):
+ tmp = self.demangled[ len( fname ): ] #demangled::name
+ if tmp.startswith( '::' ):
+ tmp = tmp[2:]
+ self.__cached_demangled_name = tmp
+ else:
+ self.__cached_demangled_name = self._name
+ return self.__cached_demangled_name
else:
return self._name
Modified: pygccxml_dev/pygccxml/declarations/declaration.py
===================================================================
--- pygccxml_dev/pygccxml/declarations/declaration.py 2006-08-25 03:01:16 UTC (rev 465)
+++ pygccxml_dev/pygccxml/declarations/declaration.py 2006-08-25 03:13:02 UTC (rev 466)
@@ -75,6 +75,8 @@
self._mangled = mangled
self._demangled = demangled
self._parent = None
+
+ #self._cached_name = None
def __str__(self):
"""Default __str__ method.
@@ -149,6 +151,12 @@
return self._name
def _get_name( self ):
+ #if self._cached_name:
+ # assert self._get_name_impl() == self._cached_name
+ # return self._cached_name
+ #else:
+ # self._cached_name = self._get_name_impl()
+ # return self._cached_name
return self._get_name_impl()
def _set_name( self, new_name ):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|