亲爱的,
我正在寻找Swift的快速解决方案来进行内存管理。我的意思是什么?我需要初始化一个数组(或缓冲区),例如1000000字节,填充零(0)并插入另一个数组(或内存缓冲区)中的给定位置。然后我必须有一个快速的方法来改变每个元素的值。如何在Swift中完成?这是阵列版本:
1。初始化新阵列 - 有三种方法可以做到这一点。我测量了每种方法连续10次执行的时间:
选项I - 时间:1.38毫秒
let tmp = Array<Int8>(count: 1000000, repeatedValue: 0)
选项II - 时间:385.54毫秒
let tmp = Array<Int8>(Repeat(count: 1000000, repeatedValue: 0))
选项III - 时间:586.43 ms
let ptr = UnsafeMutablePointer<Int8>.alloc(1000000)
ptr.initializeFrom(Repeat(count: 1000000, repeatedValue: 0))
选项II和III是从Airspeed Velocity借来的。我想利用这个机会并感谢他共同创作这么好的书; - )
2。将新数组插入位置“x”
的其他数组中对于选项I和II,我使用以下内容:
array.insertContentsOf(tmp, at: x)
单个此类操作所需的时间(无论'x'的值)为654.19 ms。我真的不知道如何用选项III做到这一点。
第3。更改值
新数组的值可以改变(当然),如下所示:
array[13453] = 20
任何加速整个过程的建议,特别是插入(第2部分),都受到欢迎。实现可能使用数组......指针......如果满足要求,这无关紧要。
我
答案 0 :(得分:1)
在测量过程中启用优化 - Swift的性能就是它的全部。