【问题标题】:JS: Boolean Array vs Int8ArrayJS:布尔数组与 Int8Array
【发布时间】:2015-11-08 07:50:29
【问题描述】:

以下之间的内存大小会更小:

[true,true,true,true,true,true,true,true,true,true]

new Int8Array(1,1,1,1,1,1,1,1,1,1)?

考虑到常规数组可以包含任何内容,每个槽的大小必须为 32 位,而 Int8Array 则每个为 8 位。对吗?

【问题讨论】:

    标签: javascript arrays memory


    【解决方案1】:

    嗯,这种直觉对我来说是有道理的,但是在 Chrome 上用一百万个测试,布尔数组并没有像 Int8Array 那样消耗我的内存,它占用的空间比预期的要多得多(也许很多Int8Array 的每个实例中的脚手架?)。

    您是否考虑过使用位掩码?您需要在每个数组中存储多少个布尔值?如果不超过 32,你可以用一个简单的整数;否则,根据How do I create bit array in Javascript?,UIntArray 和位掩码的组合应该可以解决问题。

    也有预制的位数组实现,例如https://github.com/madrobby/bitarray.js/blob/master/bitarray.js

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2017-04-26
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2017-04-08
      • 2016-11-17
      相关资源
      最近更新 更多