在 Julia 和其他我所知道的所有编程语言中,布尔值占用 8 位内存,否则它将无法在内存中寻址。例如:
x = true
println(sizeof(x)) # => 1
然而,当我创建一个布尔数组时,每个元素仍然占用整个字节:
x = [true, false, true, false, true, true, false, false]
println(sizeof(x)) # => 8
在其他语言(例如C++)中,一个包含8个布尔值的数组只需要占用1字节内存,因为每个布尔值只需要1位。是否可以让Julia也像这样优化布尔数组以便我可以节省内存?如果可以,该如何操作?
bitrand(1_000)
而不是通过BitVector(rand(Bool, 1_000))
这种方式来绕路,因为后者会更慢,并且会创建一个不必要的大临时数组。 - DNF