我有一个脚本可以在一行上写一系列数字数百万次。 ruby写入这样的文件的最快方法是什么?现在我正在计算,我需要大约21个小时才能为这个文件写入2.58亿行。它也将大约8-15gig。有什么建议吗?
def log_file(text)
File.open(File.join("combo_numbers.txt"), 'a+') do |f|
f.write("#{number}\n")
end
end
250000000.times do
# math_answer =[]
# math_answer = math
log_file(math_answer)
end
答案 0 :(得分:1)
您可以编写一个只打开文件一次的小型日志记录类,而不是为每次写入重新打开它
class Logger
def initialize path, mode = "w"
@path = path
@mode = mode
end
def write data
handle.write data + "\n"
end
private
def handle
@f ||= File.open(@path, @mode)
end
def close
@f && @f.close
end
end
用法
logger = Logger.new "combo_numbers.txt"
250_000_000.times do
logger.write "foo"
end
logger.close