Subject: bug#16893: closed (Re: bug#16893: [PATCH] Avoid matching line-by-line for case-insensitive with grep)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 01 Mar 2014 06:27:04 +0000

Your bug report

#16893: [PATCH] Avoid matching line-by-line for case-insensitive with grep

which was filed against the grep package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
16893: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16893
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#16893: [PATCH] Avoid matching line-by-line for case-insensitive with grep
From: Paul Eggert <[email-masked]>
To: [email-masked]
Date: Fri, 28 Feb 2014 22:26:36 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks, I applied that.  It simplifies another patch I've been meaning 
to put in, yay!

Subject: [PATCH] Avoid matching line-by-line for case-insensitive with grep
From: Norihiro Tanaka <[email-masked]>
To: [email-masked]
Date: Fri, 28 Feb 2014 01:02:40 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

Now grep and awk matchers doesn't waste buffer in case-sensisitive matching.
So I think that we can avoid line-by-line matching for them.

It enable to speed up case-sensitive matching with grep or awk matcher
without trivial_case_ignore as fast as when with it.

In bug#16232:
> The following times 2.16, 2.17 and 2.17+patch two ways:
> 
> $ yes jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj | head -10000000 > k
> $ for i in 16 17 18; do echo $i; env LC_ALL=en_US.UTF-8 time
> /p/p/grep-2.$i/bin/grep -i foobar k; done
> 16
>        15.96 real        14.57 user         0.12 sys
> 17
>         1.13 real         1.07 user         0.06 sys
> 18
>         1.96 real         1.89 user         0.06 sys
> 
> The above search takes more than 70% longer with the proposed patch.

Therefore, I think 30% slow-down is caused by the line-by-line matching
for them.