【发布时间】: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
以下之间的内存大小会更小:
[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
嗯,这种直觉对我来说是有道理的,但是在 Chrome 上用一百万个测试,布尔数组并没有像 Int8Array 那样消耗我的内存,它占用的空间比预期的要多得多(也许很多Int8Array 的每个实例中的脚手架?)。
您是否考虑过使用位掩码?您需要在每个数组中存储多少个布尔值?如果不超过 32,你可以用一个简单的整数;否则,根据How do I create bit array in Javascript?,UIntArray 和位掩码的组合应该可以解决问题。
也有预制的位数组实现,例如https://github.com/madrobby/bitarray.js/blob/master/bitarray.js。
【讨论】: