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