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