[cfe-commits] r172900 - /cfe/trunk/bindings/python/clang/cindex.py
Tobias Grosser
grosser at fim.uni-passau.de
Sat Jan 19 03:03:42 PST 2013
Author: grosser
Date: Sat Jan 19 05:03:42 2013
New Revision: 172900
URL: http://llvm.org/viewvc/llvm-project?rev=172900&view=rev
Log:
[cindex.py] Replace CachedProperty with our own implementation
This is a very performance critical point for auto completion. The manual
implementation gives a large speedup. As it does not complicate the code a lot,
I figured it is worth the change. If anybody understands why the CachedProperty
is here so much slower, I am very interested in working on an improvement of
CachedProperty.
Formatting time changes from 0.72 to 0.57 seconds.
Modified:
cfe/trunk/bindings/python/clang/cindex.py
Modified: cfe/trunk/bindings/python/clang/cindex.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/python/clang/cindex.py?rev=172900&r1=172899&r2=172900&view=diff
==============================================================================
--- cfe/trunk/bindings/python/clang/cindex.py (original)
+++ cfe/trunk/bindings/python/clang/cindex.py Sat Jan 19 05:03:42 2013
@@ -1659,6 +1659,7 @@
def __init__(self, completionString, key):
self.cs = completionString
self.key = key
+ self.__kindNumberCache = -1
def __repr__(self):
return "{'" + self.spelling + "', " + str(self.kind) + "}"
@@ -1667,10 +1668,15 @@
def spelling(self):
return conf.lib.clang_getCompletionChunkText(self.cs, self.key).spelling
- @CachedProperty
+ # We do not use @CachedProperty here, as the manual implementation is
+ # apparently still significantly faster. Please profile carefully if you
+ # would like to add CachedProperty back.
+ @property
def __kindNumber(self):
- res = conf.lib.clang_getCompletionChunkKind(self.cs, self.key)
- return res
+ if self.__kindNumberCache == -1:
+ self.__kindNumberCache = \
+ conf.lib.clang_getCompletionChunkKind(self.cs, self.key)
+ return self.__kindNumberCache
@CachedProperty
def kind(self):
More information about the cfe-commits
mailing list