写入大文件的最快方法

时间:2013-12-18 01:08:24

标签: ruby file

我有一个脚本可以在一行上写一系列数字数百万次。 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

1 个答案:

答案 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