summaryrefslogtreecommitdiff
path: root/src/zope/interface/interface.py
diff options
context:
space:
mode:
authorJens W. Klein <jk@kleinundpartner.at>2020-02-17 00:37:45 +0100
committerJens W. Klein <jk@kleinundpartner.at>2020-02-17 00:51:11 +0100
commit9c90b934a8550f7fde566891667923cbde7f6035 (patch)
tree6ab77d08ee3097df884ff1e1d895295c4594838d /src/zope/interface/interface.py
parent7f6f60e824ac34e2bf9ec890e6c361f57bfc823b (diff)
downloadzope-interface-hash-performance.tar.gz
performance: store cached hashvalue in slot (~1.6x faster)hash-performance
Diffstat (limited to 'src/zope/interface/interface.py')
-rw-r--r--src/zope/interface/interface.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/zope/interface/interface.py b/src/zope/interface/interface.py
index ade6f42..0f667a6 100644
--- a/src/zope/interface/interface.py
+++ b/src/zope/interface/interface.py
@@ -131,6 +131,8 @@ class SpecificationBase(object):
'__iro__',
'__sro__',
'__weakref__',
+ # Things used in InterfaceClass.
+ '_hashvalue',
)
def providedBy(self, ob):
@@ -598,10 +600,10 @@ class InterfaceClass(Element, InterfaceBase, Specification):
def __hash__(self):
try:
- return self._v_cached_hash
+ return self._hashvalue
except AttributeError:
- self._v_cached_hash = hash((self.__name__, self.__module__))
- return self._v_cached_hash
+ self._hashvalue = hash((self.__name__, self.__module__))
+ return self._hashvalue
def __eq__(self, other):
c = self.__cmp(other)