保存和加载非常大的数字

时间:2016-10-02 18:59:01

标签: ruby ruby-2.3.1

我遇到了存储问题。我有一个非常大的魔法"我想经常使用的数字(将计算时间缩短了98%)。问题在于,这个数字需要花费近40小时来计算,所以如果我可以保存并在合理的时间内重新加载它,那么节省的费用就会非常棒。

以下是用于说明问题的代表性代码。

num = 256...# Very large integer

num.size
=> 13584958492 # bytes

# To not get "string size to large error" when loading.
array_of_bytes = num # broken into sets of 100 MB

File.open("large_num", "a") do |line|
  array_of_bytes.each do |bytes|
    line.puts bytes
  end
end

# To load the number
num = 0

File.open("large_num", "r").each do |line|
  num = (num<<(8*10**8)) | line.to_i
end

# num is not equal to the input number

注意:我确实添加了必要数量的零&#39;在制作数组之前通过位移num,并在加载数字后将它们移位。

所以要么,如果有人知道它出错的地方以及如何解决它。或者如果你知道更好的方法,那就非常感激。

0 个答案:

没有答案