2

ストレージの問題が発生しました。頻繁に使用したい非常に大きな「魔法の」数があります (計算時間を驚異的な 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

注:配列を作成する前にnumをビットシフトして必要な量のゼロを追加し、数値をロードした後にそれらをビットシフトしました。

そのため、誰かがどこで問題が発生し、どのように修正するかを知っている場合。または、より良い方法を知っている場合は、非常に感謝します。

4

0 に答える 0