gpt4 book ai didi

python - IronPython vs Python 速度与 numpy

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:40 25 4
gpt4 key购买 nike

我有一些 Python 源代码可以处理数字列表(比如大约 10,000 个 float )并对这些数字进行各种计算,例如包括很多 numpy.linalg.norm。

运行时间一直不是问题,直到我们最近开始从 C# UI 使用此代码(通过 IronPython 从 C# 运行此 Python 代码)。我提取了一组函数调用(按照第 1 段中的描述进行操作),发现与 Python 2.7 相比,这段代码在 IronPython 中运行的时间大约长 4 倍(这是在排除 C#/IronPython 中的启动/设置时间之后) .我正在使用 C# 秒表围绕来自 C# 的重复 IronPython 调用,并在 Python 2.7 中围绕 execfile 使用 timeit 模块(因此 Python 时间结果包括更多操作,如加载文件、创建对象......而 C# 不't).前者约需4.0秒,后者约需0.9秒。

你会期待这种不同吗?有什么想法可以解决这个问题吗?其他意见?


编辑:

这是一个简单的代码示例,在我的机器上的 IronPython 上运行速度大约慢 10 倍(在 Python 2.7 中为 4 秒,在 IronPython 中为 40 秒):

n = 700
for i in range(n-1):
for j in range(i, n):
dist = np.linalg.norm(np.array([i, i, i]) - np.array([j, j, j]))

最佳答案

您正在使用 NUMPY?!你很幸运,它完全可以在 IronPython 中运行! The support is being added literally as we speak!

确切地说,有一个 CPython-extension-to-IronPython 接口(interface)项目,还有一个本地 CLR 端口或 numpy。我不知道您使用的是哪一种,但这两种方式都比在 CPython 中使用 C 版本慢几个数量级。

更新:

Scipy for IronPython port by Enthought你显然正在使用的看起来被遗弃了:链接的 repo 中的最后一次提交是几年前的,它在 http://www.scipy.org/install.html 中丢失了。 , 也。从这篇文章来看,它是一个部分端口,带有 .NET 中的接口(interface)和 C 中的核心,并与自定义接口(interface)相关联。上一段也代表它。

使用来自 Faster alternatives to numpy.argmax/argmin which is slow 的信息,如果您限制数据在 CLR 和 C 核心之间来回传递,您可能会得到一些加速。

关于python - IronPython vs Python 速度与 numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com