#python #performance #numpy
#python #Производительность #numpy
Вопрос:
Извините, если это слишком общий вопрос — просто с точки зрения разработки программного обеспечения это не имеет смысла.
Существует библиотека Python под названием Bottleneck для Python, которая служит для более быстрого запуска определенных методов numpy. Например, использование bottleneck.nansum в отличие от np.nansum, позволило моей программе работать чрезвычайно быстрее.
Мое замешательство возникает из-за этого — если методы bottleneck намного лучше, почему numpy просто не делает то, что делает bottleneck? Чего мне не хватает?
Комментарии:
1. Каждую из них создали разные люди. Возможно, авторы numpy не доверяют / не завершили процесс проверки, необходимый для принятия способа выполнения задач с использованием Bottleneck. Возможно, их гордость мешает. Возможно, автор Bottleneck вежливо попросил авторов Numpy не использовать его.
2. у людей нет времени делать все. Возможно, когда-нибудь numpy будет использовать более быстрый метод. Или, может быть, им нужна текущая версия по какой-то другой причине. Лучше спросите авторов numpy.
3. Разумный вопрос, но, вероятно, слишком широкий. Библиотека перечисляет ограничения, но вместо этого она вполне могла быть включена в numpy, поскольку проверка dtype дешевая. С другой стороны, они могли бы в равной степени отклонить предложение об этих ускорениях по ряду причин, таких как обратная совместимость или слишком узкая ниша, чтобы хотеть поддерживать их вместе с более общей кодовой базой
4. Без ссылок в
github
вопросах или запросов на извлечение (с любой стороны) или ссылок на форумах разработчиков, это все догадки. Мы не знаем, заинтересованы лиbottleneck
разработчики в слиянии. Большинствоbottleneck
функций включаютnan
.numpy
Версии сначала используются_replace_nan
для заменыnan
и создания маски. Этот шаг, вероятно, объясняет большую часть замедления (ср. сnp.sum
и т.д.).