#numpy #numba #codegems #zeros
История с zeros не закончилась )) Открылись новые факты. Я подумал, нумба показалась медленной из-за переключения контекста, поэтому внутри каждой функции выше просто сделал цикл до 10, чтобы основную работ вести внутри контекста. К примеру,
Выводы из прошлого поста подтвердились: numba-версии действительно медленнее numpy-евских, КРОМЕ
Оптимальная тактика на сегодня: массив создавать надо вне numba с помощью .zeros(), а обнулять его вызовом
История с zeros не закончилась )) Открылись новые факты. Я подумал, нумба показалась медленной из-за переключения контекста, поэтому внутри каждой функции выше просто сделал цикл до 10, чтобы основную работ вести внутри контекста. К примеру,
def numpy_fancy_assign(a):
for _ in range(10):
a[:, :] = 0
a[500, 500] = 1
return a
и т.д.Выводы из прошлого поста подтвердились: numba-версии действительно медленнее numpy-евских, КРОМЕ
a[:, :] = 0
, которая одна-единственная при выполнении в контексте numba в 5 раз быстрее зануляет numpy-массив, чем сам numpy. Оптимальная тактика на сегодня: массив создавать надо вне numba с помощью .zeros(), а обнулять его вызовом
a[:, :] = 0
внутри numba (если, конечно, это надо делать много раз). Feature request чтобы нумба редиректила на np.zeros.