The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: cowan@mercury.ccil.org (John Cowan)
Subject: [TUHS] Short history of 'grep'
Date: Sat, 30 Jan 2016 21:37:00 -0500	[thread overview]
Message-ID: <20160131023700.GB7917@mercury.ccil.org> (raw)
In-Reply-To: <alpine.BSF.2.11.1601311227470.14724@aneurin.horsfall.org>

Dave Horsfall scripsit:

> I'm still trying to get my around about how a program such as "egrep" 
> which handles complex patterns can be faster than one that doesn't...  It 
> seems to defeat all logic :-)

Actually, it just appears to be that way.  Many egrep things like + and ?
are supported in grep too, you just have to enter them as \+ and \?, at
least now that we have Posix regular expressions.  What egrep does not
support that grep does is backreferences, and that allows it to use highly
efficient deterministic (i.e. non-backtracking) finite state automata.
Classic grep uses backtracking, which makes it much slower on problematic
expressions like "a*b" where there is no b in the input.  On the other
hand, creating a deterministic automaton has higher setup costs.

-- 
 John Cowan          http://www.ccil.org/~cowan        cowan at ccil.org
               Si hoc legere scis, nimium eruditionis habes.


  parent reply	other threads:[~2016-01-31  2:37 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-30  3:00 Warren Toomey
2016-01-30 19:10 ` Mary Ann Horton
2016-01-30 19:44   ` Dave Horsfall
2016-01-30 20:20     ` Mary Ann Horton
2016-01-30 20:40       ` Dave Horsfall
2016-01-30 21:42         ` Marc Rochkind
2016-01-31  1:41           ` Dave Horsfall
2016-01-31  1:50             ` Larry McVoy
2016-01-31  2:06             ` jason-tuhs
2016-01-31  4:20               ` Random832
2016-01-31 17:11               ` Mary Ann Horton
2016-01-31 17:38                 ` John Cowan
2016-02-01 10:48                 ` Tony Finch
2016-01-31  2:37             ` John Cowan [this message]
2016-02-01 10:38               ` Tony Finch
2016-02-01 19:26                 ` scj
2016-01-31 17:01 Doug McIlroy
2016-03-05  1:48 ` Dave Horsfall
2016-03-05  1:54   ` Larry McVoy
2016-02-01 20:57 Doug McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160131023700.GB7917@mercury.ccil.org \
    --to=cowan@mercury.ccil.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).