Skip to content

Commit

Permalink
Cache sympify results to speedup formula exec.
Browse files Browse the repository at this point in the history
  • Loading branch information
J08nY committed Oct 6, 2023
1 parent 3f89136 commit 0e300b7
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 3 deletions.
3 changes: 2 additions & 1 deletion pyecsca/ec/curve.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
from typing import MutableMapping, Union, List, Optional, Dict, Set

from public import public
from sympy import FF, sympify
from sympy import FF
from ..misc.cache import sympify

from .coordinates import CoordinateModel, AffineCoordinateModel
from .error import raise_unsatisified_assumption
Expand Down
3 changes: 2 additions & 1 deletion pyecsca/ec/formula.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

from importlib_resources.abc import Traversable
from public import public
from sympy import sympify, FF, symbols, Poly, Rational
from sympy import FF, symbols, Poly, Rational
from ..misc.cache import sympify

from .context import ResultAction
from . import context
Expand Down
3 changes: 2 additions & 1 deletion pyecsca/ec/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"""
import json
import csv
from sympy import Poly, FF, symbols, sympify
from sympy import Poly, FF, symbols
from astunparse import unparse
from io import RawIOBase, BufferedIOBase
from pathlib import Path
Expand All @@ -14,6 +14,7 @@

from public import public

from ..misc.cache import sympify
from .coordinates import AffineCoordinateModel, CoordinateModel
from .curve import EllipticCurve
from .error import raise_unsatisified_assumption
Expand Down
12 changes: 12 additions & 0 deletions pyecsca/misc/cache.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
"""Cache some things."""
from functools import lru_cache
from sympy import sympify as _orig_sympify
from public import public


@public
@lru_cache(maxsize=256, typed=True)
def sympify(
a, locals=None, convert_xor=True, strict=False, rational=False, evaluate=None
):
return _orig_sympify(a, locals, convert_xor, strict, rational, evaluate)

0 comments on commit 0e300b7

Please sign in to comment.