簡而言之:
- 你不需要做任何事情來使用JIT,它應該只是工作,如果它可以加快你的代碼;
- 它幾乎沒用,因爲它只適用於簡單的循環;
- 它僅僅是一個概念的證明;
- 目前還沒有人在改進它,因爲:
- 這是一個複雜的問題;
- 它主要是修復馬蹄形八度碼;
- 使用LLVM太不穩定。
問:有人誰使用成功的特性可以提供一個最小的工作示例演示的正確使用方法,並在其計算機上造成了哪些影響(如果有的話)?
沒有什麼可顯示的。如果您使用JIT支持構建Octave,則Octave將自動爲某些循環使用更快的代碼。唯一的區別是速度,而不必更改代碼(儘管你可以在運行時禁用JIT):
octave> jit_enable (1) # confirm JIT is enabled
octave> tic; x = 0; for i=1:100000, x += i; endfor, toc
Elapsed time is 0.00490594 seconds.
octave> jit_enable (0) # disable JIT
octave> tic; x = 0; for i=1:100000, x += i; endfor, toc
Elapsed time is 0.747599 seconds.
## but you should probably write it like this
octave> tic; x = sum (1:100000); toc
Elapsed time is 0.00327611 seconds.
## If Octave was built without JIT support, you will get the following
octave> jit_enable (1)
warning: jit_enable: support for JIT was unavailable or disabled when Octave was built
這是一個簡單的例子,但你可以看到更好的例子和更多細節唯一一個工作的人,以及his presentation at OctConf 2012。更多細節(過時),Octave's JIT wiki page
請注意,Octave的JIT僅適用於非常簡單的循環。如此簡單的循環,沒有人熟悉該語言會首先寫出它們。這個特性是作爲概念證明的,也是任何想要擴展它的人的起點(我個人更喜歡編寫向量化代碼,這就是語言的設計目的)。
Octave的JIT還有一個問題,那就是它使用LLVM。 Octave開發人員發現它對於這個目的來說太不可靠了,因爲它不斷向後兼容。 LLVM的每個次要版本都打破了Octave版本,所以Octave開發人員在LLVM 3.5發佈時停止修復,並在默認情況下將其禁用。
也許我們應該更新http://wiki.octave.org/FAQ#Just-In-Time_compiler和/或鏈接到這個答案 – Andy