我已经移植MATLAB代码到Python和后,相当多的工作,我有东西的作品。 不利的一面,但是,是Python的运行我的代码慢于MATLAB做。 据我所知,使用优化的ATLAS库将加快速度,但实际执行,这是混淆了我。 这里是发生了什么:
我开始没有安装BLAS的IPython的会议:
import numpy.distutils.system_info as sysinfo
import time
In [11]: sysinfo.get_info('atlas')
Out[11]: {}
timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 13.4 ms per loop
在Matlab相同的代码运行速度的两倍
tic,eig(randn(1E2));toc*1000
6.5650
我从Ubuntu库安装的非优化ATAS DEB。 重新启动IPython的,现在我得到:
In [2]: sysinfo.get_info('atlas')
...
Out[2]:
{'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')],
'include_dirs': ['/usr/include/atlas'],
'language': 'f77',
'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'],
'library_dirs': ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']}
和测试代码:
In [4]: timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 16.8 ms per loop
因此,没有速度更快。 如果有任何一个触摸慢。 但是我还没有切换到优化的BLAS。 我按照这些指示: http://danielnouri.org/notes/category/python/我建库和覆盖非优化版本,与这些。 我重新启动IPython的,但有没有变化:
In [4]: timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 15.3 ms per loop
不能将它获得比这更好的? MATLAB仍然快两倍,在这个简单的例子。 当我在做图像配准的傅立叶域中的真实世界的例子,Matlab的等效比Python版本快4至5倍。 有没有人设法在numpy的MATLAB速度工作?