gpt4 book ai didi

performance - 如何使用 Swift (beta) Array 击败 NSMutableArray 的性能?

转载 作者:搜寻专家 更新时间:2023-10-31 08:19:16 29 4
gpt4 key购买 nike

在 Swift 中,我正在尝试构建一个大型项目集合。在移动中在 CoreData 中创建元素时,速度非常快。然而,当试图为这些项目保留索引时,创建数组 Swift 会对性能产生很大影响。下面的代码是 NSMutableArray 和 Swift 的数组之间的基准测试。在 iOS 模拟器中运行时,Swift Array 的速度大约慢了 8 倍。这是为什么,是否可以改进,或者应该改进 Apple 发布新版本的 Xcode/Swift?

代码:

var start: NSDate
var time: NSTimeInterval
var batch = 1000000
var rate: Double

var oArr = NSMutableArray(capacity: batch)
start = NSDate()
for i in 1..batch {
oArr.addObject(i)
}
time = -start.timeIntervalSinceNow
rate = Double(batch) / Double(time)
println("NSMutableArray \(batch) appends in \(time) sec: \(rate)/sec")

var sArr = Int[]()
start = NSDate()
for i in 1..batch {
sArr += i
}
time = -start.timeIntervalSinceNow
rate = Double(batch) / Double(time)
println("Array<Int> \(batch) appends in \(time) sec: \(rate)/sec")

模拟器(测试版 2)中的输出 794%:

NSMutableArray 1000000 appends in 1.17320102453232 sec: 852368.843096295/sec
Array<Int> 1000000 appends in 9.31138801574707 sec: 107395.374170729/sec

模拟器中的输出(测试版 3):

NSMutableArray 1000000 appends in 0.71416300535202 sec: 1400240.55083487/sec
Array<Int> 1000000 appends in 5.00839000940323 sec: 199664.961818569/sec

iPhone 5 上的输出(iOS 7.1 上的 beta 3):

NSMutableArray 1000000 appends in 8.79256194829941 sec: 113732.494110367/sec
Array<Int> 1000000 appends in 55.6573320031166 sec: 17967.084730975/sec

最佳答案

更新:

使用 Xcode beta-3,在 MacBook Pro 2 GHz Intel Core i7 上使用控制台程序,我在原始测试中得到了这些数字(由于语法的微小变化也修复了语法):

调试 (-O0):

NSMutableArray 1000000 appends in 0.782136023044586 sec: 1278549.9843203/sec
Array<Int> 1000000 appends in 5.56463801860809 sec: 179706.208500177/sec

释放 (-Os):

NSMutableArray 1000000 appends in 0.14977502822876 sec: 6676680.43081684/sec
Array<Int> 1000000 appends in 0.124498963356018 sec: 8032195.3937913/sec

发布 (-Ofast):

NSMutableArray 1000000 appends in 0.151567995548248 sec: 6597698.91646863/sec
Array<Int> 1000000 appends in 0.122538030147552 sec: 8160731.80543105/sec

关于performance - 如何使用 Swift (beta) Array 击败 NSMutableArray 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567429/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com