[英]How to copy TypedArray into another TypedArray?
C# 具有高性能的数组复制功能,可以就地复制数组:
Array.Copy(source, destination, length)
它比手动操作更快,即:
for (var i = 0; i < length; i++)
destination[i] = source[i];
我正在寻找一个等效的高性能复制函数来复制数组,用于 JavaScript 中的Int32Array
和Float32Array
并且找不到这样的函数:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
最接近的是copyWithin
,它只在数组内部进行复制。
TypedArray
是否有内置的高性能复制功能?
B计划,是否有内置的高性能克隆功能? (编辑:看起来像slice()
是答案)
您正在寻找.set
,它允许您使用输入数组(或 TypedArray)设置数组的值,可选择从目标数组的某个偏移量开始:
destination.set(source);
destination.set(source, offset);
或者,设置有限数量的输入数组:
destination.set(source.slice(limit), offset);
如果你想创建一个新的 TypedArray,你可以简单地使用.slice
:
source.slice();
您可以使用slice(0);
.
var clone = myArray.slice(0);
您可以将其设为本机方法:
Array.prototype.clone = function() {
return this.slice(0);
};
与循环相比的性能链接
克隆到现有的类型数组:
destination.set(source);
destination.set(source, offset);
克隆到一个新的 typedarray 示例:(这是最快的!)
var source = new Uint8Array([1,2,3]);
var cloned = new Uint8Array(source);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.