2016-11-13 79 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 
相關問題