简而言之:
- 你不需要做任何事情来使用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