我是swift的新手,今天我写了一个小脚本来测试它的科学应用。 关于我编写的小应用程序,它看起来比C ++慢但比python快。但是,我注意到,如果我使用解释器运行我的应用程序(比如来自终端swift 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 :(得分:1)
swift main.swift
编译Swift代码然后运行它。因此,与编译二进制文件相比,唯一的开销是在每次调用时编译代码。
您甚至可以传递编译器选项,例如优化级别:
swift -Onone main.swift swift -O main.swift swift -Ounchecked main.swift