我想使用Biot-
Savart定律
来计算某些导体的磁场,并且我想使用1000x1000x1000的矩阵。在使用MATLAB之前,但现在我想使用Python。Python比MATLAB慢吗?如何使Python更快?
编辑:也许最好的方法是使用C / C
++计算大型数组,然后将其传输到Python。然后我想用VPython可视化。
EDIT2:在我的情况下哪个更好:C还是C ++?
您可能会在此链接的底部找到一些有用的结果
http://wiki.scipy.org/PerformancePython
从介绍开始
织法与NumPy,Pyrex,Psyco,Fortran(77和90)和C ++的比较,用于求解拉普拉斯方程。
它还比较了MATLAB,似乎显示出与使用Python和NumPy时相似的速度。
当然,这只是一个特定的示例,您的应用程序可能允许更好或更差的性能。在两者上运行相同的测试并进行比较不会有任何危害。
您还可以使用优化的库(例如ATLAS)来编译NumPy,该库提供了一些BLAS
/ LAPACK例程。这些速度应与MATLAB相当。
我不确定NumPy下载是否已经针对该文件进行了构建,但是我认为,如果您编译NumPy,ATLAS会根据您的系统调整库,
http://www.scipy.org/Installing_SciPy/Windows
该链接具有Windows平台下所需内容的更多详细信息。
编辑:
如果您想找出C或C
更好的性能,可能值得提出一个新问题。尽管从上面的链接可以看出C
的性能最佳。其他解决方案也非常接近,例如Pyrex,Python
/ Fortran(使用f2py)和内联C ++。
我做过的C ++下唯一的矩阵代数是使用MTL
并实现扩展卡尔曼滤波器。不过,我想,从本质上讲,这取决于您使用的LAPACK / BLAS库以及其优化程度。
该链接列出了许多语言的面向对象的数值包。
http://www.oonumerics.org/oon/
问题内容: 我有一个用Python和Haskell编写的简单脚本。它读取一个由1000000个换行符分隔的整数的文件,将该文件解析为整数列表,对其进行快速排序,然后将其写入另一个已排序的文件中。该文件与未排序的文件具有相同的格式。简单。 这是Haskell: 这是Python: 非常简单。现在我用以下代码编译Haskell代码 我给这两个时间计时: 结果: Haskell: 蟒蛇: Python如
问题内容: 我一直认为Python的优势在于代码的可读性和开发速度,但是时间和内存的使用却不如C ++。 这些统计数据让我非常震惊。 您的经验告诉您关于Python与C ++的时间和内存使用情况? 问题答案: 我认为您错误地读取了这些统计信息。他们表明,Python比C ++ 慢 大约400倍,除了一个案例,Python更像是一种内存消耗。不过,就源代码大小而言,Python胜出。 我的Pytho
问题内容: 我已经写了一些代码,包括其中内环路约1.5万次执行的嵌套循环。我在这个循环的功能,我试图以优化。我已经做了一些工作,并取得了一些成果,但我需要查了一下输入,如果我在做什么是明智的。 一些背景: 我有两个地理点(纬度,经度)集合,一个相对较小的集合,一个相对较大的集合。对于小集合的每一个点,我需要找到大集合中的最近点。 最明显的方式做到这一点是使用haversine公式。这里的好处是,距
下面是MATLAB文档中的例子。我想在Python中用相同的结果生成相同的代码。我在其他文章中看到了三维数组如何为numpy数组(sub2ind)获得线性索引的例子,但我想要一个简单的二维数组的例子,如我所示。感谢回答代码!
问题内容: 在优化代码时,我意识到了以下几点: 并且: 我认为它与在C中实现python的方式有关,但我想知道是否有人愿意解释为什么会这样? 问题答案: 结果的(有些出乎意料的原因)是Python似乎折叠了涉及浮点乘法和幂运算而不是除法的常量表达式。完全是另一种野兽,因为没有字节码,并且涉及函数调用。 在Python 2.6.5上,以下代码: 编译为以下字节码: 如您所见,乘法和乘幂根本不需要时间
问题内容: 我可以在网上(在Stack Overflow上以及其他方面)找到大量有关使用Python或在Python中进行连接是一种非常低效且不好的做法的信息。 我似乎找不到为什么效率如此低下。在这里没有提到“在某些情况下已针对20%的改进进行了优化”(仍然不清楚这些情况是什么),我找不到任何其他信息。 在比其他Python串联方法更好的技术水平上发生了什么? 问题答案: 假设您有这段代码可以从三