2016-11-13 6 views
1

私は速くて新しく、今日は科学的なアプリケーションのためにそれをテストするための小さなスクリプトを書いています。 私が書いた小さなアプリケーションに関しては、C++よりも遅いが、Pythonよりも速いと思われる。しかし、私がインタープリターを使ってアプリケーションを実行すると(ターミナルスウィフトmain.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

あなたが開発を容易にするためで焼いグッズのすべての種類をデバッグ実行可能ファイルを実行しています。あなたは、最適化設定を調整する方法、リリースビルドを使用するようにスキームを切り替える方法、およびビルドのデバッグ情報をスキップする方法をGoogleで調べることができます。 – Alexander

答えて

1
swift main.swift 

はスウィフトコードをコンパイルし、それを実行します。コンパイルされたバイナリと比較して唯一のオーバーヘッドは、コードがすべての呼び出しでコンパイルされることです。

あなたも、このような最適化レベルとしてコンパイラオプションを渡すことができます。Xcodeで

 
swift -Onone main.swift 
swift -O main.swift 
swift -Ounchecked main.swift 
関連する問題