Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux上的Swift:如何指定编译器优化_Linux_Swift_Macos_Compilation - Fatal编程技术网

Linux上的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和

stackoverflow上的几个线程(例如)讨论了编译Swift应用程序时的不同优化级别(
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。好的,谢谢你的解释。