Numba is an open source JIT Complier that translates a subset of Python and NumPy code into fast machine code.
Numba是一个开源的JIT编译器,它将Python和NumPy代码的子集转换为机器代码
- JIT(Just in time)
首先需要认识一下python是一种解释性的语言,它会把每一句都解释一遍,如果语句出现在循环体中,循环十次就会被解释10次,不产生目标代码,但是如果加入了编译compilation,就会把文件一次性编译成目标代码,目标代码十可执行的机器语言,或是已存在相应翻译器的不可执行语言
这里就来解释一下Just in time compilation,首先仍然是compilation,有caching,不像interpretation只是执行到某句之后再解释,也不会像static compilation,它是在编译过程对代码进行优化,选择性的编译某个函数或任意某段代码。
Numba translates Python functions to optiized machine code at runtime using the industry-standard LLVM compiler library. Numba-compiled numerical algorithms in Python can approach the speeds of C or FORTRAN.
Numba使用行业标准的LLVM编译器库在运行时将Python函数转换为优化的机器代码。 Python中的Numba编译数值算法可以接近C或FORTRAN的速度。
- LLVM
LLVM是架构编译器(compiler)的框架系统,以C++