首页 > 解决方案 > 转换数组的最佳方法到数组在斯威夫特

问题描述

我有Array<Int32>大尺寸,我想把它转换成Array<Int>.

然后,我正在使用map这样的功能;

let int32array = Array<Int32>(0..<1000000)

let intarray = int32array.map{ Int($0) }

但是,我认为这种方法可能效率不高,因为这种方法对每个值都进行了转换。我想使用vDSP之类的功能一次转换 Array 类型。

有没有最有效的方法?还是这种方法最有效?

基准

let a = Array<Int32>(0..<1000000)
self.measure{
    let _ = a.map{ Int($0) }
}
average: 0.003, relative standard deviation: 24.146%, values: [0.004856, 0.003898, 0.003299, 0.002819, 0.002803, 0.002510, 0.002768, 0.002651, 0.002425, 0.002466]
let a = Array<Int32>(0..<1000000)
self.measure{
    let _ = a as [NSNumber] as! [Int]
}
average: 0.107, relative standard deviation: 21.407%, values: [0.174483, 0.108488, 0.108955, 0.096895, 0.095688, 0.095913, 0.095392, 0.098701, 0.098499, 0.098477],

标签: arraysswiftcasting

解决方案


推荐阅读