繁体   English   中英

如何将 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];

我正在寻找一个等效的高性能复制函数来复制数组用于 JavaScript 中的Int32ArrayFloat32Array并且找不到这样的函数:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM