如何键入稳定性使得朱莉娅这么快?(How does type stability make Juli

2019-09-30 02:19发布

我听说过这种类型的稳定性是什么使朱莉娅如此之快,同时仍然为其他解释性语言如Python的表现。

Answer 1:

型稳定性允许编译器直接从在编译时的输入类型确定输出类型的函数。 由于朱莉娅擅长于每个输入类型的汇编,这意味着如果所有的功能型稳定,编译器可以推断出一个函数调用内部的每一个类型的值。 发生这种情况时,Julia的JIT编译器将主要创建方法的静态类型版本和构建LLVM IR编译静态版本,其中静态版本是基本相同的汇编代码为C铿锵(LLVM)编译。

这意味着,如果编译器可以推断出每个变量的基本类型,它会,它会发出强制这些类型的持有,就好像它是完全注释的C代码的代码。 朱莉娅是动态的方式是,当这个不成立,那么将“盒子”的变量,本质上是创建一个新的类型,说:“我不知道是什么类型”,并在代码中添加了强制类型检查并在运行时调度计算来处理动态性。 所以,如果所有类型的信息是已知的,朱莉娅的动态性编译程,停止甚至是跑的代码存在。

这也是为什么多分派如此重要的语言,因为多个调度则意味着f(x)有不同的方法, f(x::Float64)即使你不指定具体的版本,编译器会推断和使用,称为自动型专业化),现在说具体的版本更可能比普通版稳定。 揭露多分派为特征其实只是使您能够拦截这个阶段编制的,并允许改变类型 - >代码的关系。



文章来源: How does type stability make Julia so fast?