]> git.cworth.org Git - apitrace/commitdiff
Speed up call hashing.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 16 Mar 2012 15:40:31 +0000 (15:40 +0000)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 16 Mar 2012 15:40:31 +0000 (15:40 +0000)
scripts/unpickle.py

index fd7989b8ff3be7cab3b711fc2f9c48212c9be05b..98e2c30b4505d27d6b779200d38382a74004addf 100755 (executable)
@@ -43,6 +43,7 @@ class Call:
 
     def __init__(self, callTuple):
         self.no, self.functionName, self.args, self.ret = callTuple
+        self._hash = None
 
     def __str__(self):
         s = self.functionName
@@ -61,10 +62,11 @@ class Call:
             self.ret == other.ret
 
     def __hash__(self):
-        # XXX: hack due to unhashable types
-        #return hash(self.functionName) ^ hash(tuple(self.args)) ^ hash(self.ret)
-        return hash(self.functionName) ^ hash(repr(self.args)) ^ hash(repr(self.ret))
-
+        if self._hash is None:
+            # XXX: hack due to unhashable types
+            #self._hash = hash(self.functionName) ^ hash(tuple(self.args)) ^ hash(self.ret)
+            self._hash = hash(self.functionName) ^ hash(repr(self.args)) ^ hash(repr(self.ret))
+        return self._hash
 
 
 class Unpickler: