JS:布尔数组vs Int8Array

JS: Boolean Array vs Int8Array

本文关键字:vs Int8Array 数组 布尔 JS      更新时间:2023-09-26

以下哪一种内存更小:

[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位。对吗?

嗯,这种直觉对我来说是有意义的,但是在Chrome上用一百万进行测试,bools数组并没有像Int8Array那样占用我的内存,这比预期的要多得多(可能在Int8Array的每个实例中都有很多脚手架?)。

你考虑过使用位掩码吗?你需要在每个数组中存储多少布尔值?如果不超过32,你可以用一个简单的整数;否则,UIntArray和位掩码的组合应该可以做到这一点,正如我如何在Javascript中创建位数组?

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