In my code, I\'m using eval to evaluate a string expression given by the user. Is there a way to compile or otherwise speed up this statement?
You can also trick python:
expression = "math.sin(v['x']) * v['y']"
exp_as_func = eval('lambda: ' + expression)
And then use it like so:
exp_as_func()
Speed test:
In [17]: %timeit eval(expression)
10000 loops, best of 3: 25.8 us per loop
In [18]: %timeit exp_as_func()
1000000 loops, best of 3: 541 ns per loop
As a side note, if v is not a global, you can create the lambda like this:
exp_as_func = eval('lambda v: ' + expression)
and call it:
exp_as_func(my_v)