Ruby字符串大小(MB)

时间:2017-12-12 12:55:37

标签: arrays ruby string size

这可能是一个简单的问题。但是我只是想知道如何在ruby中创建一个字符串或数组,以便我知道它是1MB大。或者任何大小。

3 个答案:

答案 0 :(得分:2)

创建一个百万字符的字符串:

"a" * 10**6

如果您希望它能够很好地阅读并使用Rails或者不介意需要active_support/core_ext,那么您可以执行以下操作:

"a" * 1.megabyte
"a" * 10.megabytes

这使用传统的兆字节定义(2的幂而不是10的幂)。

请注意,这是假设您将ASCII字符发送到服务,而不是尝试估计Ruby如何存储它们。

答案 1 :(得分:2)

这是不可能的。 Ruby语言规范仅指定字符串的行为,而不是如何存储它们。例如,对于压缩字符串的实现(在这种情况下,内存中字符串的大小将比您想象的要小),去除它们(在这种情况下,大小将为0)是完全合法的。例如,Rubinius将字符串存储为 ropes ,据我所知,这意味着字符串的一部分可能与其他字符串的部分共享,因此“大小”的概念甚至都不是很好 - 在这种情况下定义。

答案 2 :(得分:0)

这几天,您可以使用capacity:关键字参数来设置内部String缓冲区的大小。如果您事先知道String的大小,那就太好了,因为这样一来,您无需反复分配,就不需要重新分配。

String.new(capacity: 10**6)