Linux上的Swift:如何指定编译器优化
stackoverflow上的几个线程(例如)讨论了编译Swift应用程序时的不同优化级别(Linux上的Swift:如何指定编译器优化,linux,swift,macos,compilation,Linux,Swift,Macos,Compilation,stackoverflow上的几个线程(例如)讨论了编译Swift应用程序时的不同优化级别(Onone,O,OnChecked…) 然而,这些帖子与OSX上的开发有关。似乎可以通过Xcode或xcrun(xcrun-swift-O3)直接设置这些优化 我想知道在Linux(Ubuntu 15.10)上直接使用Swift编译器时,如何切换不同的优化级别。目前,我只是通过调用文档中显示的swift build来构建应用程序,但我发现没有办法改变优化级别。可以向swift编译器提供-O、-Onone和
Onone
,O
,OnChecked
…)
然而,这些帖子与OSX上的开发有关。似乎可以通过Xcode或xcrun(xcrun-swift-O3
)直接设置这些优化
我想知道在Linux(Ubuntu 15.10)上直接使用Swift编译器时,如何切换不同的优化级别。目前,我只是通过调用文档中显示的
swift build
来构建应用程序,但我发现没有办法改变优化级别。可以向swift编译器提供-O
、-Onone
和-Ounchecked
优化标志。但是,目前似乎无法为swift build
指定其他标志。例如,请参见以下链接,尽管它不是直接相关的:
. 同一个bug报告表明团队正在积极地添加这个缺失的功能
我发现解决这个问题的一种方法是运行swift build-v
,找到引用-Onone
的第一个命令,将它和它后面的所有命令复制到shell脚本,编辑脚本以使用所需的优化级别,而不是-Onone
,然后运行脚本。这应该使用所需的优化级别重新编译Swift源代码,并重建可执行文件
在我的测试中,我发现一个涉及排序数组的简单示例,如果使用-O
或-O
而不是-Onone
构建,则运行速度会快几个数量级谢谢,这是一个很好的解决方法。在我的测试中,-O
在快速排序实现中比-O
快4%左右,在求解TSP的遗传算法中快19%左右。与一些关于堆栈溢出的旧结果相比,我认为-O
同时得到了一些不错的改进。可能是@MikeC的重复。如果我比您提供的问题早9个月问这个问题,那么这个问题怎么会是重复的?这两个问题都问如何指定swift编译器优化级别,即使最近问了链接的问题,但对于当前版本的swift package maker(非解决方法),它有一个更准确(“更好”)的选择答案。换句话说,另一个问题/答案更好地服务于社区(IMHO)。@MikeC。好的,谢谢你的解释。