CVSROOT:        /cvs
Module name:    src
Changes by:     schwa...@cvs.openbsd.org        2022/01/12 22:10:46

Modified files:
        usr.bin/rev    : rev.c 

Log message:
Calling MB_CUR_MAX is much more expensive than incrementing a pointer
and than testing and printing a byte, so do it once up front rather
than inside the inner loop.  This speeds up rev(1) by about a factor
of three for typical use cases.
Performance issue found by cheloha@, but my fix is a bit simpler
and more rigorous than Scott's original patch.

While here, also add the missing handling for write errors (making
them fatal, whereas read errors remain non-fatal and proceed to the
next input file) and also avoid testing each byte twice, making the
code more straightforward and more readable.

In part using ideas from millert@ and martijn@.
OK martijn@.

Reply via email to