【发布时间】:2017-04-14 15:45:18
【问题描述】:
我相信,如今,V8 等 JavaScript 引擎始终能够检测到数组何时只有 0-255 范围内的数值,因此将其存储为未装箱的 Uint8 数组。因此,可以预期它们与强类型对应物一样有效。不过,在您的代码库中使用单一数组类型比拥有多个数组类型要方便得多。
在 2017 年,使用 Buffer/Uint8Arrays 而不是普通数组是否仍有明显的性能优势?
【问题讨论】:
-
当 V8 无法保证下一个添加到 Array 的数据类型是什么时,它怎么能做出这样的优化呢?出于好奇,您能否提供一个链接,指向您阅读该检测的地方?
-
@peteb 它将整个数组包装在一个对象中,该对象在您插入某些内容时执行轻量级类型检查。如果您要插入不是字节的内容,V8 会解压缩整个内容并构建一个无类型数组。至少,我认为它是这样工作的。我实际上从未读过它。
标签: javascript node.js performance