We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent d854085 commit 24df5abCopy full SHA for 24df5ab
pyadjoint/adjfloat.py
@@ -1,4 +1,4 @@
1
-from functools import cached_property, lru_cache, wraps
+from functools import cached_property, wraps
2
from itertools import count
3
import numbers
4
import operator
@@ -45,7 +45,6 @@ def fdiff(self, argindex=1):
45
return sp.Integer(1) / (sp.Integer(1) + self.args[0])
46
47
48
-@lru_cache(maxsize=128)
49
def codegen(expr, symbols, diff=()):
50
for idx in diff:
51
expr = expr.diff(symbols[idx])
@@ -58,6 +57,7 @@ class Operator:
58
57
def __init__(self, sp_operator, nargs):
59
self._sp_operator = sp_operator
60
self._nargs = nargs
+ self._cache = {}
61
62
@property
63
def sp_operator(self):
@@ -76,7 +76,9 @@ def expr(self):
76
return self.sp_operator(*self.symbols)
77
78
def codegen(self, diff=()):
79
- return codegen(self.expr, self.symbols, diff=diff)
+ if diff not in self._cache:
80
+ self._cache[diff] = codegen(self.expr, self.symbols, diff=diff)
81
+ return self._cache[diff]
82
83
84
class AdjFloatExprBlock(Block):
0 commit comments