首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift中测量已用时间

在Swift中测量已用时间
EN

Stack Overflow用户
提问于 2014-07-15 18:14:32
回答 10查看 111.8K关注 0票数 150

我们如何测量在Swift中运行函数所用的时间?我试图像这样显示经过的时间:“经过的时间是.05秒”。看到in Java,我们可以使用System.nanoTime(),在Swift中是否有任何等效的方法可以实现这一点?

请看一下示例程序:

代码语言:javascript
复制
func isPrime(_ number: Int) -> Bool {
    var i = 0;
    for i=2; i<number; i++ {
        if number % i == 0, i != 0 {
            return false
        }
    }
    return true
}

var number = 5915587277

if isPrime(number) {
    print("Prime number")
} else {
    print("NOT a prime number")
}
EN

回答 10

Stack Overflow用户

发布于 2014-10-27 05:30:41

这是一个基于CoreFoundationCFAbsoluteTime的方便的定时器类。

代码语言:javascript
复制
import CoreFoundation

class ParkBenchTimer {

    let startTime:CFAbsoluteTime
    var endTime:CFAbsoluteTime?

    init() {
        startTime = CFAbsoluteTimeGetCurrent()
    }

    func stop() -> CFAbsoluteTime {
        endTime = CFAbsoluteTimeGetCurrent()

        return duration!
    }

    var duration:CFAbsoluteTime? {
        if let endTime = endTime {
            return endTime - startTime
        } else {
            return nil
        }
    }
}

你可以这样使用它:

代码语言:javascript
复制
let timer = ParkBenchTimer()

// ... a long runnig task ...

println("The task took \(timer.stop()) seconds.")
票数 74
EN

Stack Overflow用户

发布于 2015-06-22 17:03:34

代码语言:javascript
复制
let start = NSDate()

for index in 1...10000 {
    // do nothing
}

let elapsed = start.timeIntervalSinceNow

// elapsed is a negative value.
票数 15
EN

Stack Overflow用户

发布于 2019-05-31 00:16:58

只需复制并粘贴此函数即可。用swift 5写的。在这里复制JeremyP。

代码语言:javascript
复制
func calculateTime(block : (() -> Void)) {
        let start = DispatchTime.now()
        block()
        let end = DispatchTime.now()
        let nanoTime = end.uptimeNanoseconds - start.uptimeNanoseconds
        let timeInterval = Double(nanoTime) / 1_000_000_000
        print("Time: \(timeInterval) seconds")
    }

像这样使用它

代码语言:javascript
复制
calculateTime {
     exampleFunc()// function whose execution time to be calculated
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24755558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档