aboutsummaryrefslogtreecommitdiff
path: root/bindings
diff options
context:
space:
mode:
authorTobias Grosser <grosser@fim.uni-passau.de>2013-01-19 11:03:42 +0000
committerTobias Grosser <grosser@fim.uni-passau.de>2013-01-19 11:03:42 +0000
commiteca36d1ae23d0e4c46a3c2c2b91a19f4a2f8055d (patch)
tree25004d470a1f2e3f1296f46493716408cb5defd8 /bindings
parente43d3861d969ad583e10ef7e46c5e08e866dfaa5 (diff)
[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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172900 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings')
-rw-r--r--bindings/python/clang/cindex.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/bindings/python/clang/cindex.py b/bindings/python/clang/cindex.py
index 474e10b434..5e261f8657 100644
--- a/bindings/python/clang/cindex.py
+++ b/bindings/python/clang/cindex.py
@@ -1659,6 +1659,7 @@ class CompletionChunk:
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 @@ class CompletionChunk:
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):