Comment by ahartmetz

Comment by ahartmetz 8 hours ago

5 replies

In my case, I am still using ag because rg doesn't seem to be better enough to switch. What's the big deal with rg vs ag?

I had a similar thing with bash vs zsh before I learned about oh-my-zsh. Nushell also seems attractive these days... the good stuff from PowerShell in a POSIX-like shell.

burntsushi 8 hours ago

ripgrep is a lot faster (which you might only notice on larger haystacks), has many fewer bugs and is maintained.

  • ahartmetz 6 hours ago

    ag is plenty fast (gigabytes in a fraction of a second) for me - I'd switch in a heartbeat if that wasn't so. Any bugs, hm, I guess I just haven't run into them. Thanks for the reply though! I realize who replied here ;)

    • burntsushi 6 hours ago

      Look at ag's issue tracker. There are some very critical bugs. You might be impacted by them and not even know it.

      As for perf, it's not hard to witness a 10x improvement that you'll actually feel. On my checkout of the Linux kernel:

          $ (time rg -wi '\w+(PM_RESUME|LINK_REQ)') | wc -l
      
          real    0.114
          user    0.547
          sys     0.543
          maxmem  29 MB
          faults  0
          444
      
          $ (time ag -wi '\w+(PM_RESUME|LINK_REQ)') | wc -l
      
          real    0.949
          user    6.618
          sys     0.805
          maxmem  65 MB
          faults  0
          444
      
      Or even basic queries can have a pretty big difference. In my checkout of the Chromium repository:

          $ (time rg Openbox) | wc -l
      
          real    0.296
          user    1.349
          sys     1.950
          maxmem  71 MB
          faults  0
          11
      
          $ (time ag Openbox) | wc -l
      
          real    1.528
          user    1.849
          sys     8.285
          maxmem  29 MB
          faults  0
          11
      
      Or even more basic. You might search a file that is "too big" for ag:

          $ time ag '^\w{42}$' full.txt
          ERR: Skipping full.txt: pcre_exec() can't handle files larger than 2147483647 bytes.
      • EliMdoza an hour ago

        been using both for many years now, have never ran into issues or even been able to tell any difference in speed, let alone 10x

        what I notice unfortunatly, is that I often miss search results with rg becuase I forget I need to pass the additional -i flag. this has shaped my perception of rg - extra focus on performance, sub-optimal ux

        • burntsushi 7 minutes ago

          Whether smart case is enabled by default (as ag does) could easily go either way. Notably,.I think having it disabled by default is a better UX. But ripgrep does have a --smart-case flag, which you can add to an alias or a ripgrep config file. It also works more consistently than ag's smart case feature, which has bugs.

          See my other comments about perf difference. And ag has several very critical bugs. And it's unmaintained.

          > or even been able to tell any difference in speed

          If you only search small amounts of data, then even a naive and very slow grep is likely just fine from a perf perspective.