在 Numba 中重新编译

Re-compilation in Numba

我有一个关于 numba 的基本问题,不幸的是我到目前为止找不到答案。考虑以下代码:

import numba

@numba.jit(nopython=True)
def f1(x):
    y = 0
    for _ in range(1000):
       y += f2(x)
    return y

@numba.jit(nopython=True)
def f2(x):
    return x

函数f2是在循环中每次f1调用时都重新编译,还是只编译一次?

f1第一次被调用并被编译时,它必然会编译f2并且包括f2在内的整个编译函数将被缓存在内存中。 f1 的每个后续调用(除非使用与先前调用类型不同的值 x 调用)不会导致重新编译任何代码。