Swift 为什么一个简单的快速算术运算编译得这么慢?

Swift 为什么一个简单的快速算术运算编译得这么慢?,swift,xcode,swift-compiler,Swift,Xcode,Swift Compiler,为了优化我的应用程序的构建时间,我在我的其他\u SWIFT\u标志中添加了以下内容: OTHER_SWIFT_FLAGS = -Xfrontend -warn-long-expression-type-checking=75 -Xfrontend -warn-long-function-bodies=75 我得到了一个警告,警告这个特定的类型检查很慢,我不知道我是否可以在这里以某种方式帮助编译器 var延迟:时间间隔=时间间隔(索引)*0.05 有什么建议可以加快这些基本算术运算的编译速度

为了优化我的应用程序的构建时间,我在我的
其他\u SWIFT\u标志中添加了以下内容:

OTHER_SWIFT_FLAGS = 
-Xfrontend -warn-long-expression-type-checking=75
-Xfrontend -warn-long-function-bodies=75
我得到了一个警告,警告这个特定的类型检查很慢,我不知道我是否可以在这里以某种方式帮助编译器

var延迟:时间间隔=时间间隔(索引)*0.05

有什么建议可以加快这些基本算术运算的编译速度

我正在用Swift 5运行Xcode 11.5

还尝试显式地将数字强制转换为
时间间隔
,因为默认情况下所有数字都是双倍的,所以不需要这样做。
编译器执行类型检查。如果你的表情很长,那就需要时间。有时,当表达式太长时,甚至会出现以下错误:

编译器无法在中对该表达式进行类型检查 时间尝试将表达式拆分为不同的子表达式

试试像这样的东西

var delay: TimeInterval = TimeInterval(index) * TimeInterval(0.05)

在构建设置中,在“Swift编译器-常规”下检查“反射元数据级别”,并尝试将其设置为“无”

自从升级到Xcode 11.4之后,我的项目从大约20秒的编译时间跳到了大约6-7分钟的编译时间

我注意到这只发生在调试版本中,这很奇怪,因为发布版本执行更多的优化,编译应该需要更长的时间。我最终将缓慢的构建追溯到“反射元数据级别”设置。默认情况下,对于“调试”生成,它设置为“全部”


这可能是Xcode 11.4及更高版本中包含的Swift编译器中的一个错误,因为在早期版本中,此设置从未对我造成问题。(这是从Swift编译器5.2版开始的。)

TimeInterval
Double
的类型别名,所以你可以只做
TimeInterval(index)*TimeInterval(0.05)
@Alexander如果你是对的,我更新了答案这根本没有帮助。事实上,它实际上使情况变得更糟(很难说在编译一次之后,结果是138毫秒)@Groot关于
var delay:TimeInterval=TimeInterval(index)*0.05作为TimeInterval呢?不走运。122ms@Alexander@monica警告一句:除非编译时间对您来说是一个巨大的问题,否则不要过分追求这条龙。您将使用越来越少的类型推断,向代码中添加大量的类型信息,这些信息只会使代码变得杂乱无章,只会获得一些毫秒的编译收益。考虑到几乎所有的构建都是增量的,并且只涉及几个文件,这通常不是一个很大的警告——我不会。这更多是出于好奇。