【加速实践】番外篇:numbajit
link
JIT是什么
jit 的全稱是 Just-in-time,在 numba 里面則特指 Just-in-time compilation(即時編譯),它是一種編譯技術(shù),下面的對比即可對jit進行清晰的定位
編譯方式
動態(tài)編譯(dynamic compilation):指的是“在運行時進行編譯”;與之相對的是事前編譯(ahead-of-time compilation,簡稱AOT),也叫靜態(tài)編譯(static compilation)JIT編譯(just-in-time compilation)狹義來說是當(dāng)某段代碼即將第一次被執(zhí)行時進行編譯,因而叫“即時編譯”。JIT編譯是動態(tài)編譯的一種特例。JIT編譯一詞后來被泛化,時常與動態(tài)編譯等價;但要注意廣義與狹義的JIT編譯所指的區(qū)別自適應(yīng)動態(tài)編譯(adaptive dynamic compilation)也是一種動態(tài)編譯,但它通常執(zhí)行的時機比JIT編譯遲,先讓程序“以某種式”先運行起來,收集一些信息之后再做動態(tài)編譯。這樣的編譯可以更加優(yōu)化。注意事項
但是jit技術(shù)并不總是能夠如預(yù)期的加速代碼,甚至有可能降低代碼效率,這于代碼的結(jié)構(gòu)有關(guān),不過絕大多數(shù)情況還是能夠有明顯的效果的JIT之于Python
Python啥都好,就是太“動態(tài)”了,導(dǎo)致去運行效率不高,jit之于python那簡直是如虎添翼
首頁第一句話便是:Numba是一個開源的JIT編譯器,它可以將Python和NumPy代碼的子集轉(zhuǎn)換為高效的機器碼。
numba使用LLVM編譯器架構(gòu)將純Python代碼生成優(yōu)化過的機器碼,將面向數(shù)組和使用大量數(shù)學(xué)的python代碼優(yōu)化到與c,c++和Fortran類似的性能,而無需改變Python的解釋器。總結(jié)
以上是生活随笔為你收集整理的【加速实践】番外篇:numbajit的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GraalVM Internship P
- 下一篇: Ubuntu16.04运行VoxelNe