Project

General

Profile

Feature #2372

read_all() with buffering

Added by wanabe (_ wanabe) almost 11 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
[ruby-dev:39696]

Description

=begin
io.c の read_all() で、変換が必要な場合の処理が少し重いようだったので
バッファに少し溜めてから io_shift_cbuf() を呼び出すようにするパッチを書きました。
溜めるバイト数は io_shift_cbuf() 中にあった式を参考にしています。

ベンチマークスクリプトとその結果を併せて添付します。
bm_io_file_read.rb を参考に、エンコーディングやモードを複数試すようにしています。
Windwos 以外では 'r' モードは 'rb' モードと同じ結果になると思います。

最大で約 2.8 倍速を計測しましたが、変換が複雑な場合には差は縮まり、
また当然ながら短いファイルではほとんど差は出ませんでした。

どなたかもし興味を持っていただけたら、Windows でない、または十分速い環境で
同様に速度が改善するかどうか試していただけると助かります。
=end


Files

buffering_readall.patch (1.1 KB) buffering_readall.patch wanabe (_ wanabe), 11/15/2009 09:21 PM
test.rb (565 Bytes) test.rb wanabe (_ wanabe), 11/15/2009 09:21 PM
log.txt (2.06 KB) log.txt wanabe (_ wanabe), 11/15/2009 09:21 PM

Also available in: Atom PDF