javascript - JS : ArrayBuffer of Unknown Size

标签 javascript buffer arraybuffer

我有一个大对象,我想将其存储在 ArrayBuffer 中(假设是 Uint8Array)。注意:我不知道该物体有多大。

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

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

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

创建一个常规数组并在最后将其转换为 Uint8Array 怎么样? ?

最佳答案

如果您一次只需要一个,但每次仍然需要多个并且需要速度,则需要保留第一个数组并覆盖它。您可以按照您的描述算出第一个所需的内存量(它并不慢),但保留下一个数组的数组(您需要一些东西来保持当前长度)。每次当你需要更多的时候,你就按照第一个的方式去做。当内存变得太大时,您可能希望不时地“释放”内存。

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

关于javascript - JS : ArrayBuffer of Unknown Size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36831279/

相关文章:

javascript - 将数组缓冲区转换为字符串

javascript - 覆盖 Electron 通知弹出窗口

c - 在文件复制的上下文中字符缓冲区的用途是什么? [C]

javascript - 浏览器关闭时终止 session

ios - 将 FBO 保存到相机胶卷后清理后出现崩溃错误? Swift 2.0 选择器语法

node.js - NODEJS + WS 库 = 缓冲区分配错误

javascript - 如何解密一个 ArrayBuffer?

c++ - 如何从 C++ Node.js 插件读取/写入数据到 ArrayBuffer?

javascript - 在 PHP 循环中使用 javascript onclick

javascript - for 循环中添加数字不断增加的新输入时出现的问题