JS:未知大小的ArrayBuffer

时间:2016-04-25 02:48:22

标签: javascript buffer arraybuffer

我有一个大对象,我想存储在ArrayBuffer中(比如说Uint8Array)。注意:我不知道对象有多大。

我已经掌握了在缓冲区中设置值的所有逻辑。 (例如,如果我使用new Uint8Array(100000000);,它已经工作了。)

问题在于我不知道是否可以有效地调整缓冲区大小。表演是这里的主要关注点。

我一直在考虑从说new Uint8Array(100);开始,如果我需要更多,我会创建一个大小为new Uint8Array(200);的新内容,并将新内容复制到新内容上(不是很确定如何)。等等。

如何创建常规数组并将其最终转换为Uint8Array

1 个答案:

答案 0 :(得分:0)

如果您一次只需要一个但仍需要很多并且需要速度,则需要保留第一个阵列并覆盖它。你可以计算你所描述的第一个所需的内存量(它不是那么慢),但保留数组用于下一个(你需要一些东西来保持当前的长度)。每当您需要更多时,您就像第一个那样做。当它变得太大时,你可能想要“释放”内存。

这是一个穷人的malloc() /垃圾收集器,是的,它假定您对数组的需求严格连续。