@knn7713

Почему код с numba медленнее кода без него?

Есть класс, я создаю много его экземпляров, для каждого из которых надо произвести определенные математические вычисления. Чтобы все это дело работало быстрее, пытаюсь использовать numba.

@jitclass([('ind', uint)])
class CheckTheory:
    def __init__(self, ind):
        self.ind = ind
    def complex_math_calculations(self, inc_value):
        self.ind += inc_value

@njit(parallel=True, fastmath=True)
def main_func():       
    classSamplesArray = []
    # init class samples
    for i in range(10000):
        classSamplesArray.append(CheckTheory(i))
    for sample in classSamplesArray:
        sample.complex_math_calculations(10)

start_time = time.time()
main_func()
print(time.time() - start_time)


НО: время выполнения с numba: 0.1412217617034912 секунд
без numba: 0.018378019332885742 секунд

Что я делаю не так? Как можно ускорить выполнение?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@StarCatSTT
Попробуй сделать вместо последних трех строчек так:
start_time = time.time()
for x in range(1000):
    main_func()
print(time.time() - start_time)

У меня вышли такие результаты:

Numba:  1.2769
No numba: 6.77


Первое выполнение самое долгое, так как нумба "компилирует" код.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы