Cython Groupby функционирует намного медленнее, чем аналогичная функция NumbaPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Cython Groupby функционирует намного медленнее, чем аналогичная функция Numba

Сообщение Anonymous »

У меня очень простая группа по функции, которую я хочу использовать в цинтоне, но это примерно в 400 раз медленнее, чем аналогичная функция в Python jited by numba < /p>
Это моя Функция цинтона < /p>
@cython.boundscheck(False) # Deactivate bounds checking
@cython.wraparound(False) # Deactivate negative indexing.
@cython.ccall
def groupby(
in_index: cython.long[:], in_values: cython.float[:], number_of_results: cython.long
) -> cython.double[:]:
results = np.zeros(number_of_results, dtype=np.float64)
results_view: cython.float[:] = results
index: cython.long[:] = in_index
val: cython.float[:] = in_values
index_max: cython.Py_ssize_t = in_index.shape[0]
n: cython.Py_ssize_t
for n in range(index_max):
results_view[index[n]] += val[n]

return results
< /code>
Но эта функция с numba < /p>
@jit(nopython=True, fastmath=True)
def agg_sims(group_idx, a, number_of_sims):
output = np.zeros(number_of_sims, dtype=np.float64)
for i in range(group_idx.shape[0]):
output[group_idx] += a
return output
< /code>
Я хотел бы использовать цифон, потому что Numba плохо справляется с объектом, который я создал Выход функции в собственный файл и составил его с цинтоном (в Windows с инструментами VS Build) и использованием набора случайных данных, но индекс упорядочен < /p>
Это пример Данные < /p>
sim_index=np.array([0,1,2,2,3,3,3,3,3,4,4,5,5,5,5,6,6,7,7,7,7,7,8,8,9,9,9])

loss_values=np.array([983218.798545568,78773.246069412,427915.701586101,384401.565066934,976474.931385909,
491002.57968459,449277.841899304,2157814.69086177,634849.51236713,683151.164470444,951717.254327894,
338593.160096285,111153.600572457,327118.874300972,585857.183862426,1793115.50344123,775898.742468206,
236320.911958699,412790.930873261,894075.886633843,400713.081209467,1142732.59966746,
651378.893317142,238021.483213581,50557.1083702021,75622.454060533,153180.479257057])
< /code>
Фактические данные составляют около 2,5 млн. Значения

Groupby в цинтоне, которые привели мне это с Timeit

805 мс ± 30,9 мс за за каждую Цикл (среднее ± Std. Dev. из 7 прогонов, 1 цикл каждый) < /p>
Но версия Numba с одинаковыми данными < /p>
4,35 мс ± 667 μs на цикл (среднее значение ± Std. Dev. из 7 прогонов, 1 цикл каждый) < /p>
Я в потере того, почему функция цинтона намного медленнее, чем функция Numba. /p>
Функция цинтона не показывает каких -либо основных взаимодействий Python в файле HTML аннотации. На самом деле просто функция Numpy.
Любые предложения действительно были бы полезны.

Подробнее здесь: https://stackoverflow.com/questions/794 ... a-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Cython Groupby функционирует намного медленнее, чем аналогичная функция Numba
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Cython Groupby функционирует намного медленнее, чем аналогичная функция Numba
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Почему моя функция сортировки C ++ намного медленнее, чем моя функция сортировки C#?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Почему моя функция сортировки C ++ намного медленнее, чем моя функция сортировки C#?
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Webassembly работает намного медленнее, чем чистая функция JavaScript.
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»