我在尝试使用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或多重处理可能会有帮助,但我还没有想出如何做到这一点。
任何帮助都将不胜感激。如果你想让我发布更多的信息,请告诉我。
发布于 2014-10-28 05:23:22
我很好奇能提高多少性能,所以为gmpy2编写了一个新的函数,它完全用C语言计算列表的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 loopgmpy2没有发布全局解释器锁(GIL),所以线程不会有帮助。
多处理可能会有所帮助,但您可能需要并行化代码中需要几秒钟(或更长时间)才能执行的部分代码,以克服将数据传递到另一个进程的开销。
基于软件的、任意精度的浮点比本地浮点要慢.
https://stackoverflow.com/questions/26600471
复制相似问题