Swift编译为本机代码吗?

时间:2014-06-05 05:37:40

标签: swift

简单的问题,但在current developer documentation中似乎没有直接的答案。

Swift是否编译为机器语言(即程序集),还是编译为某个中间形式然后在虚拟机上运行?

(我怀疑它确实如此,但对苹果公司的发展并不熟悉,我不清楚这可能对某人有所帮助。)

4 个答案:

答案 0 :(得分:31)

是的,它通过llvm位代码编译为机器语言,并且正如@connor所说,它运行在Objective-C运行时之上。

答案 1 :(得分:18)

Swift不仅编译为本机机器代码,而且还是designed specifically for it。与...不同Java专门设计为JITed语言。我的意思是,Swift通过提前编译实现了最佳性能,而Java从JITing中获益最多。

这些设计选择有很多原因,但其中包括Swift比Java等托管语言有更大的范围。它应该适用于具有更多受限硬件的台式计算机和电话。您可以将Swift用作系统编程语言,这与C#,Java或Python不同,因为它几乎没有运行时要求,并且允许对内存进行相当详细的控制。所以从理论上讲,应该能够用Swift构建一个操作系统内核,这对Java来说很难。

答案 2 :(得分:8)

Swift,就像objective-c使用llvm

编译为本机代码一样

可以在Apple's top secret Swift language grew from work to sustain Objective C, which it now aims to replace

中找到一个很好的解释

从那篇文章,谈论Swift

  

编译器针对性能进行了优化,语言是   为发展做了优化,而不会妥协。

答案 3 :(得分:6)

Swift与Objective-C一样,被编译为在Objective-C运行时运行的机器代码。