Почему разница в скорости между нулями Python Numpy и пустыми функциями исчезла для больших массивов? - PullRequest
2 голосов
/ 24 сентября 2019

Меня заинтриговало сообщение в блоге Майка Краучера, где он сравнил время, необходимое для двух функций numpy.zeros((N,N)) и numpy.empty((N,N)) для N=200 и N=1000.Я запустил небольшую петлю в блокноте Jupyter, используя магию %timeit.График ниже показывает соотношение времени, необходимого для numpy.zero к numpy.empty.Для N=346 numpy.zero примерно в 125 раз медленнее, чем numpy.empty.При N=361 и выше обе функции требуют почти одинакового времени.

Позже, обсуждение в Твиттере привело к предположениям, что либо numpy делает что-то особенное для небольших распределений, чтобы избежать вызова malloc, либо что ОС может свести инициативу к нулюиз выделенной страницы памяти.

Что может быть причиной этой разницы для меньших N и почти равного времени, необходимого для больших N?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...