这个问题最初被问到在stackoverflow byt被发现是脱离主题,下面的文本已经从最初的post更新了新的细节。
我最近购买了一台带有i7处理器的新电脑。 我安装了Fedora 24,还有Python和一些科学编程所需的库,如Numpy和Scipy(Numpy version 1.11.0)。
在安装完所有我需要的之后,我运行了一些testing代码(从这里下载),以评估系统的速度,特别是:
test_numpy.py其中包含:
#!/usr/bin/env python import numpy import sys import timeit try: import numpy.core._dotblas print 'FAST BLAS' except ImportError: print 'slow blas' print "version:", numpy.__version__ print "maxint:", sys.maxint print x = numpy.random.random((1000,1000)) setup = "import numpy; x = numpy.random.random((1000,1000))" count = 5 t = timeit.Timer("numpy.dot(x, xT)", setup=setup) print "dot:", t.timeit(count)/count, "sec"
运行这段代码后,我得到:
slow blas version: 1.11.0 maxint: 9223372036854775807 dot: 0.0981109619141 sec
我的问题是,在更老的PC上,“点”的执行时间更短。 特别是对于使用i7处理器的旧版(2012)Windows PC,我得到:
FAST BLAS version: 1.9.1 maxint: 2147483647 dot: 0.0459410942418 sec
使用运行Linux Mint 18的旧版(2013)i7个人电脑,我可以得到:
slow blas version: 1.11.0 maxint: 9223372036854775807 dot: 0.0240209579468 sec
正如你所看到的,更旧的PC,特别是运行Linux Mint 18的PC,速度要快4倍。
我自己安装了所有这些电脑。 特别是对于Fedora最近的一个,我使用了python 2.x和3.x这两个numpy软件包:(1)在dnf和(2)从源代码编译(如这里所解释的)。 我还要补充一点,上面提到的所有时间代表了几次执行代码后所得到的值,而没有任何其他的运行过程。
我相信我在这里错过了一些东西。 我不知道该怎么做,以获得我的新PC的体面表演…
(在Fedora 23和Mint 18最近的其他PC上也出现了同样的问题)
更新 :
我在上面提到的PC上安装了Ubuntu 16.04,而不是Fedora 24。 Numpy点的计算时间除以10,其他testing的计算时间明显较短:
$ python test_numpy.py slow blas version: 1.11.0 maxint: 9223372036854775807 dot: 0.00876359939575 sec $ python test_scipy.py cholesky: 0.00768299102783 sec svd: 0.304620409012 sec
我能在网上find的唯一信息是在一个非常古老的post,但我很难相信这种types的bug可以持续很长时间。