Комментарии 13
Что касается типизированных массивов то все уже давно скомпилировано в numpy.
И даже векторизация к ним есть https://numpy.org/doc/stable/reference/generated/numpy.vectorize.html
Вы не описали одну важную деталь. Для nogil есть очень существенное ограничение по типам данных, которые в функции можно использовать. Написать nogil функцию с numba - задача отнюдь не простая.
По копирайтеским статьям технология звучит как крутая. У вас был опыт с нею в проде? Легко ли собрать низковисящие фрукты просто добавив анатаций к части методов или всплывают всякие нюансы и овчинка выделки не стоит?
Numba установлена. Но прежде чем мы перейдем к коду, убедимся, что у вас также установлен NumPy,
А ничего что numba вытягивает NumPy сама? И не факт, что numba установлена, неизвестрый ей Pyhton 3.12 на дворе...
А так да, если по простому - выводит скорость Python примерно на уровень Julia. Но не Rust.
Как простому обывателю хотелось бы видеть насколько получается ускорение. Просто тайминги - как без этого и как и этим. Специально ради сравнения ставить себе все и проводить эксперимент неохота, вдруг там на 3% ускорение и оно того не стоит.
Тайминги по любому будут абстрактными. На одних задачах и наборах данных будет работать, на других нет.
У меня в основном io-bound задачи или мало данных, мне не на чем своём попробовать.
Да я хотя бы о приведенных примерах - суммирование миллиона элементов массива и т.п. Т.е. запустить этот код без numba и с ней. Наверняка будет существенный прирост.
Просто в тексте написано "можем заметить значительный прирост" а таймингов никаких. Понятно что можно себе установить, скопировать текст примера и попробовать. Но хотелось бы просто увидеть впечатляющее ускорение :)
Товарищи, немного не по теме. Но приглядитесь, пожалуйста, к изображению. Оно вызывает вопросы... и вообще не жизнеспособно (начиная с двойного зрачка, заканчивая разрезанным телом)
в numba мне надоело, что с каждой версией они добавляют новых багов, а ряд фич нереализованы.
Я просто поставил в свой проект pip ziglang который содержит портативный llvm clang компилятор для винды/линух/мак.
При запуске моё приложение делает компиляцию C++ кода на компе пользователя необходимые функции обработки данных, а из питона через ctypes я их вызываю.
В результате я не только избавился от подобных numba jit-костылей, так что мой код теперь портативен и надежен на века, но я так же и получил в КАЖДОЙ функции скорость исполнения в 2 раза быстрее чем в numba.
Это работает только под python 13 версии?
Ускоряем работу python с numba