抱歉这么多问题。我在 Intel core 2 Duo 上运行 Mac OSX 10.6。我正在为我的研究运行一些基准测试,但我遇到了另一件让我困惑的事情。
如果我跑
python -mtimeit -s 'import numpy as np; a = np.random.randn(1e3,1e3)' 'np.dot(a,a)'
我得到以下输出:10 loops, best of 3: 142 msec per loop
但是,如果我运行
python -mtimeit -s 'import numpy as np; a = np.random.randint(10,size=1e6).reshape(1e3,1e3)' 'np.dot(a,a)'
我得到以下输出:10 loops, best of 3: 7.57 sec per loop
然后我跑了
python -mtimeit -s 'import numpy as np; a = np.random.randn(1e3,1e3)' 'a*a'
接着
python -mtimeit -s 'import numpy as np; a = np.random.randint(10,size=1e6).reshape(1e3,1e3)' 'a*a'
两者都以每个循环约 7.6 毫秒的速度运行,因此它不是乘法。添加也有相似的速度,所以这些都不应该影响点积,对吧?那么为什么使用整数计算点积比使用浮点数慢 50 倍以上呢?