在我的应用程序中,我无法确定哪种浮点格式最适合性能。它不是我担心的比特问题,而是它与我正在使用的各种函数的接口,因为我使用的是数学库和图形库。
因此,我使用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
?
答案 0 :(得分:1)
typealias不会创建新类型,它只允许在现有类型的到位中使用新名称。因此,没有进行转换,也不需要进行优化。