ストレージの問題が発生しました。頻繁に使用したい非常に大きな「魔法の」数があります (計算時間を驚異的な 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をビットシフトして必要な量のゼロを追加し、数値をロードした後にそれらをビットシフトしました。
そのため、誰かがどこで問題が発生し、どのように修正するかを知っている場合。または、より良い方法を知っている場合は、非常に感謝します。