看到问题的第一感觉是,一定是哪里不对!因为无论是 MATLAB 还是 Python + Numpy 底层都是调用 BLAS, LAPACK 等,所以速度应该不会差别很大。
我在自己的电脑上测试了一下,用的 Windows 10 + MATLAB 2018b + Anaconda,CPU为 i7-8700k。双方都可以使用 MKL 加速。
MATLAB代码
A = rand(10000, 10000); B = rand(10000, 10000); f = @() A*B; timeit(f)
得到的结果是 6.6110s
Python代码 (ipython)
import numpy as np A = np.random.rand(10000, 10000) B = np.random.rand(10000, 10000) %timeit A @ B
结果为 6.45s +- 182ms
从结果来看,基本可以认为,二者没有区别。
所以,题主哪里没有配置好?希望对题主有所帮助
PS:这类只涉及到基本矩阵运算的语言之间的比较是没有意义的,因为大家都是调用底层的库来实现,差别可能就是一点调用开销,这在整个程序中可以忽略不计。
如果真的想比较语言之间的差别,需要根据任务自己实现一些任务,然后比较运行速度。当然,严格来说这也有偏差,因为不同的语言适应的任务也不同,但是起码有一定的意义。
PS2: 由于题主的CPU是AMD,所以我怀疑可能是平台的关系。随便Google一下发现了一些人在抱怨,MATLAB在AMD的CPU上执行速度并不理想,甚至满于低一档Intel CPU。例如,有人发现同样的代码,在AMD 2990WX(32核64线程@3.5GHZ, 64G RAM)上需要2200s,而在 Intel 8700k (6核12线程@4.0GHZ, 32GRAM)上只需要600s,3.5x倍的速度。[1]
原因大概有二: