Why GNU grep is fast (2010)
It's probably worth pointing out that OS X is using BSD grep.  You will see a phenomenal difference if you install the gnu grep via homebrew:    $ homebrew info grep
    GNU grep, egrep and fgrep
    https://www.gnu.org/software/grep/
    /usr/local/Cellar/grep/3.3 (21 files, 885.3KB) *
      Poured from bottle on 2019-01-03 at 12:23:37
    From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/grep.rb
    ...

This is a very arbitrary example, but I've got 1.5Gb application log sitting on my machine right now that'll suffice.  I'll even do this in a way that might give a slight performance advantage to BSD, by using gnu grep first:    $ time /usr/local/bin/ggrep "foobarbaz" application.log
    
    real 0m1.319s
    user 0m0.948s
    sys 0m0.345s

vs OSX's grep:    $ time /usr/bin/grep "foobarbaz" application.log
    
    real 0m37.225s
    user 0m31.036s
    sys 0m1.286s

1s vs 37s.  Same file.There's nothing odd about the file, straight boring application logs, and the line starts with the logging level in capital letters.  So I can use a regex that is pinned to the start of the line, about as optimal as you can get:first gnugrep:    $ time /usr/local/bin/ggrep -c "^INFO" application.log
    1527786
    
    real 0m0.622s
    user 0m0.323s
    sys 0m0.292s

then OS X's native bsd grep:    $ time /usr/bin/grep -c "^INFO" application.log
    1527786
    
    real 0m3.588s
    user 0m3.206s
    sys 0m0.349s

BSD grep was significantly better than the prior search, but it is still notably slower than the gnu grep.In my experience, this isn't the most pathological example, but it's close.  Note that this also applies to other tools that leverage grep under the surface, like zgrep etc.I've specifically aliased grep over to ggrep in my shell so that I'm avoiding bsd grep whenever I can:    $ alias grep
    alias grep='/usr/local/bin/ggrep'