Извините за столько вопросов. Я запускаю Mac OSX 10.6 на Intel Core 2 Duo. Я использую некоторые тесты для своих исследований, и я столкнулся с другой проблемой, которая меня озадачивает.
Если я запустил
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 раз медленнее вычисляет точечный продукт с помощью ints, чем с помощью float?