Numpy dot product очень медленный с использованием целых чисел

извините за столько вопросов. Я использую 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 раз медленнее, чем с использованием чисел с плавающей запятой?

14
задан andrewdotnich 8 August 2012 в 01:10
поделиться