如何将 TypedArray 复制到另一个 TypedArray?
How to copy TypedArray into another TypedArray?
C# 有一个高性能的数组复制函数来复制数组 就地:
Array.Copy(source, destination, length)
它比手动操作更快,即:
for (var i = 0; i < length; i++)
destination[i] = source[i];
我正在寻找一个等效的高性能复制函数来复制数组 就地 ,对于 Int32Array
和 Float32Array
在 JavaScript 和找不到这样的功能:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
最接近的是 copyWithin
,它只在数组内部进行复制。
是否有 TypedArray
s 的内置高性能复制功能?
Plan B,有内置的高性能克隆功能吗? (编辑:看起来 slice()
就是答案)
您可以使用 slice(0);
克隆数组。
var clone = myArray.slice(0);
您可以将其设为本机方法:
Array.prototype.clone = function() {
return this.slice(0);
};
性能 link 与循环相比
您正在寻找 .set
,它允许您使用输入数组(或 TypedArray)设置数组的值,可选择从目标数组的某个偏移量开始:
destination.set(source);
destination.set(source, offset);
或者,设置有限数量的输入数组:
destination.set(source.slice(limit), offset);
如果您想创建一个新的 TypedArray,您可以简单地使用 .slice
:
source.slice();
克隆到现有类型数组:
destination.set(source);
destination.set(source, offset);
克隆到新的类型数组示例:(最快!)
var source = new Uint8Array([1,2,3]);
var cloned = new Uint8Array(source);
C# 有一个高性能的数组复制函数来复制数组 就地:
Array.Copy(source, destination, length)
它比手动操作更快,即:
for (var i = 0; i < length; i++)
destination[i] = source[i];
我正在寻找一个等效的高性能复制函数来复制数组 就地 ,对于 Int32Array
和 Float32Array
在 JavaScript 和找不到这样的功能:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
最接近的是 copyWithin
,它只在数组内部进行复制。
是否有 TypedArray
s 的内置高性能复制功能?
Plan B,有内置的高性能克隆功能吗? (编辑:看起来 slice()
就是答案)
您可以使用 slice(0);
克隆数组。
var clone = myArray.slice(0);
您可以将其设为本机方法:
Array.prototype.clone = function() {
return this.slice(0);
};
性能 link 与循环相比
您正在寻找 .set
,它允许您使用输入数组(或 TypedArray)设置数组的值,可选择从目标数组的某个偏移量开始:
destination.set(source);
destination.set(source, offset);
或者,设置有限数量的输入数组:
destination.set(source.slice(limit), offset);
如果您想创建一个新的 TypedArray,您可以简单地使用 .slice
:
source.slice();
克隆到现有类型数组:
destination.set(source);
destination.set(source, offset);
克隆到新的类型数组示例:(最快!)
var source = new Uint8Array([1,2,3]);
var cloned = new Uint8Array(source);