Swift on Linux:如何指定编译器优化

Swift on Linux: how to specify compiler optimizations

stackoverflow上的几个线程(例如,这个线程)在编译swift应用程序时讨论不同的优化级别(OnoneOOunchecked…)。

但是,这些发布与OSX上的开发有关。这些优化似乎可以通过xcode或xrun(xcrun swift -O3直接设置。

在Linux(Ubuntu 15.10)上直接使用swift编译器时,我想知道如何切换不同的优化级别。目前,我只是通过调用swift build来构建应用程序,如文档中所示,但我发现没有任何方法可以改变优化级别。


可以向Swift编译器swiftc提供-O-Onone-Ounchecked优化标志。但是,目前似乎没有办法为swift build指定其他标志。例如,请参见以下链接,即使它不是直接相关的:https://bugs.swift.org/browse/sr-397。相同的bug报告表明团队正在积极地添加这个缺失的功能。

我发现解决这个问题的一种方法是运行swift build -v,找到引用-Onone的第一个命令,将它及其后面的所有命令复制到shell脚本,编辑脚本以使用所需的优化级别而不是-Onone,然后运行脚本。这应该使用所需的优化级别重新编译swift源并重新生成可执行文件。

在我的测试中,我发现一个简单的例子,涉及排序一个数组运行两个数量级的速度更快,如果使用EDCOX1,0或EDCOX1,2,而不是EDCOX1 1。