MATLAB是否比Python快(简单的实验)

MATLAB是否比Python快(简单的实验),第1张

MATLAB是否比Python快(简单的实验)

首先,使用

time
并不是测试这种代码的好方法。但是,让我们忽略它。


当您的代码需要执行很多循​​环并在每次循环中重复非常相似的工作时,PyPy的JIT将做得很好。当该代码每次都执行
完全相同
的 *** 作时,达到可以从循环中取出的恒定值,它将做得更好。另一方面,CPython必须为每次循环迭代执行多个字节码,因此它会很慢。通过在我的计算机上进行的快速测试,CPython
3.4.1耗时24.2秒,而PyPy 2.4.0 / 3.2.5耗时0.0059秒。

IronPython和Jython也是JIT编译的(尽管使用了更通用的JVM和.NET JIT),因此,对于此类工作,它们也往往比CPython快。


通常,您还可以通过使用NumPy数组和向量运算而不是Python列表和循环来加快CPython本身的工作速度。例如,下面的代码花费0.011秒:

i = np.arange(10000000)i[:] = 4 * x * (1-x)

当然,在这种情况下,我们显式只计算一次该值并将其复制10000000次。但是我们可以强制它一次又一次地进行实际计算,它仍然只需要0.12秒:

i = np.zeros((10000000,))i = 4 * (x+i) * (1-(x+i))

其他选项包括用Cython编写部分代码(编译为Python的C扩展),以及使用Numba,后者通过JIT在CPython中编译代码。对于像这样的玩具程序,两者都不适合—如果您仅尝试优化一次性的24秒过程,那么花费在自动生成和编译C代码上的时间可能会浪费通过运行C代码而不是Python代码节省的时间。但是在现实的数字编程中,两者都是非常有用的。(而且两者都可以与NumPy很好地玩。)

而且总是会有新的项目出现。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5617320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存