【发布时间】:2022-01-28 23:35:57
【问题描述】:
在 C 中,我可以声明一个用0 填充的大型布尔数组,如下所示:
_Bool* sieve = malloc(limit + 1);
在 Python 中:
sieve = bytearray({False}) * (limit + 1)
在 Ruby 中,我可以这样做:
sieve = [false] * (limit + 1)
但这似乎占用了很多内存; Python 版本占用 len(sieve) + 57 字节,但 Ruby 版本占用 sieve.length * 8 + 40 字节。
有没有办法让一个较短的数组只用于布尔值?我对 Python 版本之类的东西很好,所以它不像 C 那样必须是 sieve.length 字节,如果它实现类似 Python 版本的东西,我更喜欢更简单的代码。 p>
【问题讨论】:
标签: arrays ruby memory boolean