我试图通过使用numba模块来加速我的脚本。但是每次运行我的脚本时,numba
都会编译我的一些类(我使用@jitclass
)。我想知道是否有可能编译我的类,我知道它们不会改变,以避免每次运行我的脚本时由于编译而造成一些时间损失。我在十几个课程中使用numba
,大约需要1分钟。
我已经考虑过使用numba
提前编译代码,但我认为我不太了解它。 link
但是,当我使用jitclass
时,我不能使用它。
答案 0 :(得分:2)
据我所知(当前发布的numba:0.36),您无法使用jitclass
进行提前编译(AOT)。
从您的问题中不清楚您的代码花费了多少编译时间。一分钟似乎极端,但我通常一次只使用一些jitclasses
。我已经在许多模块中使用了许多相互依赖的函数,并且从未见过编译时间超过几秒钟。
如果您可以比较第一次执行代码与后续执行代码所花费的时间,那么假设运行时具有确定性,那应该是编译时间。
如果实时编译的启动成本不实用,那么最佳选择可能是使用Cython来编写C-extensions。缺点是您无法在nopython
模式下使用numba代码来使用它们。有许多更好的组织数据结构的方法可能会有所帮助,但是如果没有看到代码就很难说清楚。