Я тщательно перевёл некоторую функцию в своем коде с не-нумбы на нумбу.Я сделал это, чтобы увеличить время, так как я программирую Quadtree для вычисления площади множества пересекающихся кругов.Тем не менее, я не получил увеличение эффективности.Наоборот, эффективность уменьшается , когда я раскомментирую jit decorator!Весь код занимает около 1 секунды без декоратора и около 3 секунд с декоратором.Я выполняю повторные вызовы двух функций Numba в другом цикле, который содержит объекты, которые я не смог преобразовать в формат Numba.
Весь фрагмент кода состоит из сотен строк, поэтому я приведу минимальный пример, иллюстрирующий один из них.из ключевых операций в моем алгоритме (сравнение элементов в массивах Numpy).Версия Python 2.7.15
, а версия numba 0.41.0+0.gf118cda06.dirty
.
import numpy as np
import numba
from datetime import datetime
from numba import jit
@jit(nopython=True)
def test():
a = np.array([0.3, 0.5])
b = np.array([0.4, 0.6])
c = (a[0] < b[1])
return c
start = datetime.now()
c = test()
end = datetime.now()
diff = end - start
print "c is", c, diff.microseconds, "microseconds"
Когда @jit(nopython=True)
декоратор без комментариев (как в фрагменте кода), я получаю:
c is True 0 microseconds
Когда это комментируется , я получаю:
c is True 153000 microseconds
Почему это так неблагоприятно?