static-type-inference
这个编译过程非常重要,因为它寻找的是可能被转换为静态/基本类型的动态变量,底层编译器可以更好地对其进行优化。
下面的代码使用一组动态变量来执行一些数学计算:
public function someCalculations(var a, var b)
{
var i = 0, t = 1;
while i < 100 {
if i % 3 == 0 {
continue;
}
let t += (a - i), i++;
}
return i + b;
}
变量a
, b
, i
仅用于数学运算,因此可以利用其他编译通道转换为静态变量。 在此传递之后, 编译器会自动将此代码重写为:
public function someCalculations(int a, int b)
{
int i = 0, t = 1;
while i < 100 {
if i % 3 == 0 {
continue;
}
let t += (a - i), i++;
}
return i + b;
}
通过禁用此编译过程, 所有变量都将维护最初声明它们的类型, 而不进行优化。