How do I make gmpy array operations faster?

守給你的承諾、 提交于 2019-12-02 07:30:50

I was curious to see how much performance increase would be possible so wrote a new function for gmpy2 that calculated the sin of a list entirely in C. Unfortunately, there wasn't much improvement.

%timeit [gmpy2.sin(x) for x in a]
100 loops, best of 3: 4.85 ms per loop
%timeit map(gmpy2.sin, a)
100 loops, best of 3: 4.59 ms per loop
%timeit gmpy2.vector(a)
100 loops, best of 3: 4.44 ms per loop

gmpy2 does not release the Global Interpreter Lock (GIL) so threading won't help.

Multiprocessing may help but you will probably need to parallelize portions of code that take seconds (or longer) to execute to overcome the overhead of passing data to another process.

Software-based, arbitrary-precision floating point is just slower than native floating point.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!