svn commit: r211463 - head/usr.bin/grep
dimitry at andric.com
Wed Aug 18 21:25:49 UTC 2010
On 2010-08-18 22:48, mdf at FreeBSD.org wrote:
>> - Refactor file reading code to use pure syscalls and an internal buffer
>> instead of stdio. This gives BSD grep a very big performance boost,
>> its speed is now almost comparable to GNU grep.
> I didn't read all of the details in the profiling mails in the thread,
> but does this mean that work on stdio would give a performance boost
> to many apps? Or is there something specific about how grep(1) is
> using its input that makes it a horse of a different color?
Originally, it was reading files 1 character at a time, using fgetc(3),
the locking version even. This is usually not the fastest way to read
a large file with stdio. :)
If grep did not have to support .gz or .bz2 files, we could just have
plugged in stdio's fgetln(3). I tried this approach first on some
non-compressed files, and it performed much better than fgetc'ing.
The reading code that was now committed, is basically the same algorithm
as fgetln() uses internally, but it can handle gzip and bzip2 input too.
More information about the svn-src-all