Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift编译器在使用typealias时是否消除了多余的类型转换?_Swift - Fatal编程技术网

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是否会带来性能上的好处,不,它们是在编译时处理的,所以它们不能提供任何运行时的好处。这个问题的动机是什么?您是否正在经历实际的缓慢?如果你有一个严肃的“什么更快”的问题,不要问;测试。让我更改我使用的名称,所以这主要是一个理论问题,但我现在知道这不是什么大问题