如何使 gmpy 数组操作更快?

2023-12-01

我在尝试使用 gmpy 模块时一直遇到速度问题。

import numpy as np
import gmpy2 as gm
N = 1000
a = range(N)
%timeit [gm.sin(x) for x in a]
# 100 loops, best of 3: 7.39 ms per loop
%timeit np.sin(a)
# 10000 loops, best of 3: 198 us per loop

我想知道是否可以以某种方式加快计算速度。我认为 JIT 或多处理可能会有所帮助,但我还没有弄清楚如何做到这一点。

任何帮助将不胜感激。如果您想让我发布更多信息,请告诉我。


我很好奇性能可以提高多少,因此编写了一个新函数gmpy2计算出的sin不幸的是,没有太大的改进。

%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不会释放全局解释器锁(GIL),因此线程没有帮助。

多重处理可能会有所帮助,但您可能需要并行化需要几秒钟(或更长时间)执行的代码部分,以克服将数据传递到另一个进程的开销。

基于软件的任意精度浮点仅比本机浮点慢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 gmpy 数组操作更快? 的相关文章

随机推荐