arrays - 转换数组的最佳方法到数组在斯威夫特
问题描述
我有Array<Int32>
大尺寸,我想把它转换成Array<Int>
.
然后,我正在使用map
这样的功能;
let int32array = Array<Int32>(0..<1000000)
let intarray = int32array.map{ Int($0) }
但是,我认为这种方法可能效率不高,因为这种方法对每个值都进行了转换。我想使用vDSP之类的功能一次转换 Array 类型。
有没有最有效的方法?还是这种方法最有效?
基准
map
方法
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]
NSNumber
方法
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],
解决方案
推荐阅读
- java - 需要使用反射和注释从父类构造函数实例化子类成员
- java - com.querydsl.core.Tuple 的 ClassCastException
- python-3.x - 将单行数据输出到 csv 文件
- c# - 多个 ViewModel 之间的 WPF 通信
- angular - 如何实例化需要依赖注入的类
- javascript - 单击输入字段时,如何在 html input type='date' 中获取日期选择器
- r - R:基于中位数的年度复合栅格:如何获取每个像素的原始图层的索引?
- c++ - 如何使用 uWebSockets 主动向客户端推送数据?
- javascript - 窗口调整大小时元素的动态宽度计算
- reactjs - 错误:React Native 无法加载包