Linux上的Swift:如何指定编译器优化
在编译Swift应用程序时,stackoverflow上的几个线程(例如这个)讨论了不同的优化级别( Onone
, O
, Ounchecked
...)。
但是,这些帖子与OSX上的开发有关。 看来这些优化可以通过Xcode或xcrun( xcrun swift -O3
)直接设置。
我想知道如何直接在Linux(Ubuntu 15.10)上使用Swift编译器时切换不同的优化级别。 目前,我只是通过调用swift build
应用程序,因为它在文档中显示,但我发现没有办法不改变优化级别。
可以为Swift编译器swiftc
提供-O
, -Onone
和-Ounchecked
优化标志。 但是,看起来目前没有办法指定额外的标志来swift build
。 例如,请参阅以下链接,即使它不直接相关:https://bugs.swift.org/browse/SR-397。 同一个错误报告表明,该团队正在积极努力添加这个缺失的功能。
我发现解决此问题的一种方法是运行swift build -v
,找到引用-Onone
的第一个命令,将它及其后的所有命令复制到shell脚本中,编辑脚本以使用所需的优化级别而不是-Onone
,然后运行该脚本。 这应该使用所需的优化级别重新编译Swift源代码并重建可执行文件。
在我的测试中,我发现如果使用-O
或-Ounchecked
而不是-Onone
构建一个涉及对数组进行排序的简单示例,则运行速度要快几个数量级。