gpt4 book ai didi

javascript - 如何有效地将 Float32Array 插入 Float32Array?

转载 作者:行者123 更新时间:2023-11-29 14:59:38 35 4
gpt4 key购买 nike

我正在尝试在花药 Float32Array 的中间插入一个 Float32Array。我目前正在创建一个新的 Float32Array 并使用 3 个 for 循环将元素插入到这个新的 Float32Array 中(1 个用于插入前,1 个用于插入新的 Float32Array,1 个用于插入后)。

这需要很长时间。有没有更快的方法将 Float32Array 插入另一个?例如,是否有类似于

// Suppose originalArray and insertedArray are 2 Float32Arrays of
// lengths 100000 and 5000 respectively, and I want to insert
// insertedArray into originalArray at element 50000.

var combinedArray = new Float32Array(105000);
combinedArray.set(originalArray.subarray(0, 50000));
combinedArray.subarray(50000, 55000).set(insertedArray);
combinedArray.subarray(55000, 105000).set(originalArray.subarray(50000, 100000));

目前,上述代码不起作用,因为 subarray 方法不返回与整个 Float32Array 相关的 set 方法的值.

最佳答案

有些事情你可以在一堆指令中完成:

var combinedArray = new Float32Array(105000);
combinedArray.set(originalArray);
[].splice.apply(combinedArray, [50000, 0].concat([].slice.call(insertedArray, 0)));

虽然我不太了解它的性能。我担心 combinedArray 会以某种方式转换为 Array,从而占用大量内存,可能还会占用 CPU。它不应该,但我不确定。

无论如何,set 方法有一个 second optional argument ,即必须设置新元素的数组偏移量。因此,您的最后两行将变为:

combinedArray.set(insertedArray, 50000);
combinedArray.set(originalArray.subarray(50000, 100000), 55000);

也许这样效率更高。

编辑:是的,根据this test .所以,你有你的方式。

关于javascript - 如何有效地将 Float32Array 插入 Float32Array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033354/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com