小编Ada*_*nke的帖子

为什么Int.random()比arc4random_uniform()慢?

我已经使用Int.random()方法和arc4random_uniform()进行了数字生成速度测试。
两项测试均在macOS控制台中运行,并将构建配置设置为release。以下是我用于测试的代码。

public func randomGen1() {
    let n = 1_000_000
    let startTime = CFAbsoluteTimeGetCurrent()
    for i in 0..<n {
        _ = arc4random_uniform(10)
    }
    let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
    print(timeElapsed)
}
public func randomGen2() {
    let n = 1_000_000
    let startTime = CFAbsoluteTimeGetCurrent()
    for i in 0..<n {
        _ = Int.random(in: 0..<10)
    }
    let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
    print(timeElapsed)
}
Run Code Online (Sandbox Code Playgroud)

我得到的时间是
0.029475092887878418(用于arc4random_uniform(10))
0.20298802852630615(用于Int.random(in:0 .. <10))

为什么Int.random()这么慢?
有没有优化的方法?
有没有更快的方法快速生成随机数?

random swift

5
推荐指数
1
解决办法
193
查看次数

标签 统计

random ×1

swift ×1