Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中,使用固定大小的缓冲区读取文本文件的正确方法是什么?_Ruby_Performance_File_File Io - Fatal编程技术网

在Ruby中,使用固定大小的缓冲区读取文本文件的正确方法是什么?

在Ruby中,使用固定大小的缓冲区读取文本文件的正确方法是什么?,ruby,performance,file,file-io,Ruby,Performance,File,File Io,我正试图绕过这个缓慢的文件。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)

我正试图绕过这个缓慢的文件。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

我不知道如何实现一个缓冲区来存储每行的剩余部分。

ruby talk邮件列表中也讨论过类似的问题。该线程称为
.

我看不出答案在那里。在中,请看以whilebuf2=f.read@bufsize开头的外观。它是您试图实现的目标的小型实现`