Swift编译器在使用typealias时是否消除了多余的类型转换?
在我的应用程序中,我无法决定哪种浮点格式对性能最好。我担心的不是位的问题,而是它如何与我使用的各种函数交互,因为我使用的是数学库和图形库 因此,我使用Swift编译器在使用typealias时是否消除了多余的类型转换?,swift,Swift,在我的应用程序中,我无法决定哪种浮点格式对性能最好。我担心的不是位的问题,而是它如何与我使用的各种函数交互,因为我使用的是数学库和图形库 因此,我使用typealias EngineedeCIMAL=CGFloat构建了所有内容,以便在最后我可以尝试将其更改为其他格式,如GLFloat、Float32等 我的问题是,如果我编写这样的函数,编译器会做什么: func foo(in: EngineDecimal)-> EngineDecimal { return Decimal(math
typealias EngineedeCIMAL=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 engineedecimal=CGFloat
与typealias engineedecimal=GLFloat
相比,这段代码的运行速度会更快吗?typealias不创建新类型,它只允许使用新名称代替现有类型。因此,不需要进行强制转换,也不需要进行优化。已经有了一个,所以这不是一个愚蠢的名称选择吗?Decimal
也是一个内置的Swift类型,所以将其用作CGFloat
的类型别名是一个非常糟糕的主意。此外,你的问题没有任何类型。至于TypeAlias是否会带来性能上的好处,不,它们是在编译时处理的,所以它们不能提供任何运行时的好处。这个问题的动机是什么?您是否正在经历实际的缓慢?如果你有一个严肃的“什么更快”的问题,不要问;测试。让我更改我使用的名称,所以这主要是一个理论问题,但我现在知道这不是什么大问题