gpt4 book ai didi

arrays - 有没有比数组更轻量级的替代品?

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:45 24 4
gpt4 key购买 nike

我需要创建一个包含 30 亿个 bool 变量的数组。我的内存只有 4GB,因此我需要这个数组非常紧凑(每个变量最多一个字节)。理论上这应该是可能的。但我发现 Ruby 为数组中的一个 bool 变量使用了太多空间。

ObjectSpace.memsize_of(Array.new(100, false))   #=> 840

每个变量超过 8 个字节。我想知道在 Ruby 中是否有更轻量级的 C 数组实现。

除了小配置文件外,我还需要每个 bool 值都能快速访问此数组,因为我需要根据需要尽快翻转它们。

最佳答案

Ruby 不是一种性能良好的语言,尤其是在内存使用方面。正如其他人所说,你应该把你的 bool 值放在数字中。由于 ruby​​ 的“对象化”,你会失去很多内存。如果这对您来说是一个糟糕的场景,您可以存储到较长的字符串中并将字符串存储在数组中,从而减少内存损失。

http://calleerlandsson.com/2014/02/06/rubys-bitwise-operators/

您还可以在 C++ 中实现自己的 gem,它可以自然地使用位和 double ,从而减少内存损失。 double 组意味着每个位置有 64 个 bool 值,对您的应用来说绰绰有余。

超大对象始终是个问题,需要您执行大量操作才能更轻松地处理大量对象。当然,您至少必须实现某种方法来访问存储多个 bool 值的对象数组中的某个位置,以及翻转它们的其他方法。

关于arrays - 有没有比数组更轻量级的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31222257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com