首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使gmpy数组操作更快?

如何使gmpy数组操作更快?
EN

Stack Overflow用户
提问于 2014-10-28 03:33:26
回答 1查看 469关注 0票数 1

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

代码语言:javascript
复制
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或多重处理可能会有帮助,但我还没有想出如何做到这一点。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-28 05:23:22

我很好奇能提高多少性能,所以为gmpy2编写了一个新的函数,它完全用C语言计算列表的sin,不幸的是,没有多少改进。

代码语言:javascript
复制
%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),所以线程不会有帮助。

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

基于软件的、任意精度的浮点比本地浮点要慢.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26600471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档