【发布时间】:2012-08-08 01:05:16
【问题描述】:
很抱歉有这么多问题。我在 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 倍以上呢?
【问题讨论】:
-
在 Linux 上对我来说也是如此——float64 大约需要 3 秒,int32 大约需要 10 秒(这是一台较旧的机器)。不是 50 倍,但仍然很奇怪。
标签: python floating-point numpy int dot-product