Как масштабируются массивы Python / Numpy с увеличением размеров массива?
Это основано на некотором поведении, которое я заметил при тестировании кода Python для этого вопроса: как выразить это сложное выражение с помощью кусочков
Проблема в основном заключалась в индексации для заполнения массива. Я обнаружил, что преимущества использования (не очень хороших) версий Cython и Numpy над циклом Python варьировались в зависимости от размера используемых массивов. И Numpy, и Cython испытывают растущее преимущество в производительности до некоторой степени (где-то около для Cython и N = 2000 для Numpy на моем ноутбуке), после чего их преимущества уменьшились (функция Cython осталась самой быстрой).
Это оборудование определено? С точки зрения работы с большими массивами, какие рекомендации следует придерживаться для кода, где оценивается производительность?
Этот вопрос ( почему не мое матрично-векторное масштабирование умножения? ) Может быть связан, но мне интересно узнать больше о том, как различные способы обработки массивов в Python масштабируются относительно друг друга.
источник
Ответы:
В этом тесте есть несколько ошибок, для начала я не отключаю сборку мусора и беру сумму, не самое лучшее время, но терпите меня.
Стоит ли беспокоиться о размере кеша? Как правило, я говорю нет. Оптимизация для него в Python означает усложнение кода для сомнительного прироста производительности. Не забывайте, что объекты Python добавляют несколько накладных расходов, которые сложно отследить и предсказать. Я могу думать только о двух случаях, когда это является важным фактором:
В комментариях Эверт упомянул CArray. Обратите внимание, что, даже работая, разработка остановилась и была заброшена как самостоятельный проект. Функциональность будет включена в Blaze вместо этого, в продолжающийся проект по созданию «Numpy нового поколения».
источник