C#具有高性能的数组复制功能来复制数组。
Array.Copy(source, destination, length)
这比手工操作要快。
for (var i = 0; i < length; i++)
destination[i] = source[i];
我正在寻找一个等效的高性能复制函数来复制数组,用于Int32Array
和Float32Array
在JavaScript中,并且找不到这样的函数:
最近的是copyWithin
,它只在数组内部执行副本。
是否有内置的高性能复制函数用于TypedArray
方案B,是否有内置的高性能克隆功能?(编辑:看起来slice()
是答案)
发布于 2016-02-22 13:08:51
您正在寻找.set
,它允许您使用输入数组(或TypedArray)设置数组的值,可以选择从目标数组的某个偏移量开始:
destination.set(source);
destination.set(source, offset);
或者,要设置输入数组的有限数量:
destination.set(source.slice(limit), offset);
如果您想要创建一个新的TypedArray,可以简单地使用.slice
source.slice();
发布于 2016-02-22 12:52:31
您可以使用slice(0);
克隆数组。
var clone = myArray.slice(0);
您可以将其作为一种本地方法:
Array.prototype.clone = function() {
return this.slice(0);
};
性能链接与循环的比较
发布于 2016-03-25 07:23:44
克隆到已存在的类型:
destination.set(source);
destination.set(source, offset);
克隆到一个新的类型化示例:(这是最快的!)
var source = new Uint8Array([1,2,3]);
var cloned = new Uint8Array(source);
https://stackoverflow.com/questions/35563529
复制相似问题