2016-11-13 51 views
1

我是swift的新手,今天我写了一个小脚本来测试它的科学应用。 关于我写的小应用程序,它似乎比C++慢,但比python快。不过,我注意到,如果我使用解释器运行我的应用程序(如从终端swift main.swift)或者我编译它,执行时间没有差异。Swift shell和Swift之间的区别

我错过了什么,或者是正常的。我预计编译版本会有相当大的加速。下面的代码示例:

import Foundation 

    func isPrime(num:Int) -> Int { 

     var IsPrime = 0 
     var count = 1 

     for index in 1...num-1 { 

     if (num % index != 0) { 
      ++count 

     } 

    } 

    if (count == num-1) { 

     IsPrime = 1 
    } 

    return IsPrime 

} 


    var isReallyPrime = 0 
    var maxNum = 10000 
    print(isPrime(21)) 

let methodStart = NSDate() 

var primeArray = [Int]() 

for index in 2...maxNum-1 { 

    if (index%1000 == 0) { 

     print("Iterarion \(index)") 

    } 

    if (isPrime(index) == 1) { 
     primeArray.append(index) 
    } 
} 

    let methodFinish = NSDate() 
    let executionTime = methodFinish.timeIntervalSinceDate(methodStart) 


var last = primeArray.last 
print("Last prime number: \(last)") 
print("Execution time [s]: \(executionTime)") 
+0

在Xcode中你正在运行各类烘烤,缓解发展的好东西调试可执行文件。你可以看看谷歌如何调整优化设置,如何切换你的方案使用发布版本,以及如何跳过构建调试信息。 – Alexander

回答

1
swift main.swift 

编译斯威夫特代码,然后运行它。所以与编译的二进制文件相比,唯一的开销是代码在每次调用时都被编译。

你甚至可以通过编译器选项,例如优化级别:

 
swift -Onone main.swift 
swift -O main.swift 
swift -Ounchecked main.swift 
相关问题