【问题标题】:If v8 optimizes ArrayBuffer like Uint*Array如果 v8 像 Uint*Array 一样优化 ArrayBuffer
【发布时间】:2018-10-07 19:06:10
【问题描述】:

我检查了Where to use ArrayBuffer vs typed array in JavaScript?,但它没有描述ArrayBuffer 是否经过v8 优化。所以假设你在ArrayBuffer 中有不同的整数块或浮点数,想知道它们是否会像 Uint8Array 一样被 v8 优化,等等。

【问题讨论】:

  • 这没有意义,TypedArrays 是 ArrayBuffer 上的 视图。 ArrayBuffer 只是分配的物理内存插槽。可以进行哪些优化?
  • @Kaiido 看到答案,typedarrays 比 arraybuffer 更优化。
  • 不,答案正是我所说的:优化 ArrayBuffer 没有意义,或者用@jmrk 的话来说:“我没有看看你会对它们进行哪些优化”。您显然缺少有关 ArrayBuffers 和 TypedArrays 的一些信息。再说一遍,ArrayBuffers 只是内存插槽,就像是在说计算机,我会为自己保留这个区域,所以不要让任何人碰它。但是这里没有什么可以优化的。因为正如答案所述,“ArrayBuffers 无法访问其元素”。

标签: javascript v8 arraybuffer typed-arrays


【解决方案1】:

V8 开发人员在这里。 ArrayBuffers 只是数据容器,我看不出您会对它们进行哪些优化。您希望对“整数块或浮点数”进行什么样的优化?

类型化数组是 ArrayBuffers 的视图;您链接的帖子的答案很好地解释了这一点。类型化数组提供对其元素的基于索引的访问(并且 V8 的优化编译器对此类访问有很好的支持); ArrayBuffers 无法访问其元素(因此不适用相同的优化)。

【讨论】:

  • 酷,我是内存方面的新手,所以我知道的不多,但我在想象优化,例如Uint8Array 与内存中的对齐/位置和/或不同的寄存器等有关,例如 8 位 16 位。也许 Uint8Array 使用了优化,我不知道它们是什么。如果这些是它们,那么它们似乎可以应用于 ArrayBuffer。
猜你喜欢
  • 2017-09-24
  • 2021-11-16
  • 2017-11-04
  • 2014-10-05
  • 2011-12-23
  • 2017-02-09
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多