2010/4/30 Roger Pack <redmine / ruby-lang.org>
> Bug #3228: speedup File.read
> http://redmine.ruby-lang.org/issues/show/3228
>
> Author: Roger Pack
> Status: Open, Priority: Normal
> ruby -v: ruby 1.9.2dev (2010-05-01 trunk 27570) [i686-linux]
>
> Appears from http://www.ruby-forum.com/topic/209005
> that File.read could be sped up by first requesting the file's size, then reading that much.
>
> File.read('a', File.size('a')) # faster than just File.read('a') by about 15% in Linux/Windows
>
> in windows, it also speeds up ascii reading dramatically, which was unexpected, but nice.
> Cheers!
> -rp
>
Hi,

From my tests on ruby-trunk( ruby 1.9.2dev (2010-04-23 trunk 27451)
[x86_64-darwin10.3.0], so OSX and maybe irrelevant? ),
I get significant improvement (2-3 times faster), but result is different.

In fact, the former use UTF-8 encoding, and the latter use
ASCII-8BIT(so BINARY).

If you force binary with:
File.read file, mode: 'rb', I - most of the time - get the same results.

So the source of the problem (at least on my system), is the fact
File.read(f) will use UTF-8, even when the file is binary (I used
7-zip and database).

On pure ASCII text file, it's about 30% faster.

Regards,
B.D.