Почему существуют библиотеки, подобные bottleneck для numpy?

#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 и т.д.).