stackerflow上的几个线程(例如这个线程)在编译Swift应用程序时讨论了不同的优化级别(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
构建,则运行速度会快几个数量级。