使用类型时,Swift编译器是否摆脱了多余的类型转换?

时间:2017-09-11 18:13:16

标签: swift

在我的应用程序中,我无法确定哪种浮点格式最适合性能。它不是我担心的比特问题,而是它与我正在使用的各种函数的接口,因为我使用的是数学库和图形库。

因此,我使用typealias EngineDecimal = CGFloat构建了所有内容,以便最后我可以尝试将其更改为其他格式,例如GLFloat,Float32等。

我的问题是,如果我编写这样的函数,编译器会做什么:

func foo(in: EngineDecimal)-> EngineDecimal
{
   return Decimal(mathFunction(CGFloat(in)));
}
//foo2 is a library defined function that I have no control over but I'm typing a sample one for this example
func foo2(in: CGFloat) -> CGFloat
{
   return sin(in) + cos(in)
}

如果Decimal与CGFloat的类型相同,那么编译器是否会注意到这些类型,从而摆脱了铸造语句?因此,如果typealias EngineDecimal = CGFloat vs typealias EngineDecimal = GLFloat

,此代码本质上会运行得更快

1 个答案:

答案 0 :(得分:1)

typealias不会创建新类型,它只允许在现有类型的到位中使用新名称。因此,没有进行转换,也不需要进行优化。