Как правильно читать текстовый файл с использованием буфера фиксированного размера в Ruby? - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь обойти медленную реализацию File.each_line Ruby.

  def parse
    @file         = File.open(@file)
    @filesize     = @file.stat.size
    @buffer_size  = 10485
    @offset       = @buffer_size
    @counter      = 0
    @line_counter = 0

    @file.seek(0, File::SEEK_END)
    while @file.tell > 0
      @file.seek(-@offset, File::SEEK_END)
      buffer = @file.read(@buffer_size)
      buffer_line = buffer.split("\n")[1]
      @counter += 1
      puts @counter
      @offset += @buffer_size
      return if @offset > @filesize
    end
  end

Я не уверен, как я могу реализовать буфер, где я мог бы хранить оставшуюся часть каждой строки.*

1 Ответ

0 голосов
/ 27 октября 2011

Подобная проблема обсуждалась в списке рассылки ruby-talk. Нить называется Быстрый способ обработки больших файлов построчно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...