Hi Shigio Yes, of course. Here is the sequence of commands (grepping for the fixed string “grep”). You may want to run a dummy command first to fill the file system cache. $ cd emacs-master $ gtags $ du -ch $(global -P) | tail -n 1 79M total $ time global -g grep > /dev/null
real 0m0,261s user 0m0,257s sys 0m0,004s $ time grep -l grep $(global -P) >/dev/null real 0m0,064s user 0m0,048s sys 0m0,016s $ time rg -l grep $(global -P) >/dev/null real 0m0,027s user 0m0,036s sys 0m0,020s Regards, Marcus On Thu, Apr 30, 2020 at 6:28 AM Shigio YAMAGUCHI <[email protected]> wrote: > Hi Marcus, > Could you please give me an example of the command line to understand the > issue? > I'm not sure what you did. > > Thanks, > Shigio > > 2020年4月30日(木) 6:12 Marcus Harnisch <[email protected]>: > > > > Hi Shigio > > > > Until now I hadn't noticed that global has its own grep implementation. > > It turns out that running ‘grep -l’ with a fixed string pattern on the > list of files obtained with ‘global -P’ consumes about a quarter of the > time of the corresponding ‘global -g’ command in a non-trivial code base > (emacs-master, total size of files searched amounting to 79MB). > > Modern grep replacements, such as ripgrep ( > https://github.com/BurntSushi/ripgrep) are even faster than that. Exact > numbers will obviously differ based on the actual pattern used. > > Perhaps grep() could be changed to off-loading to an external tool > (possibly even configurable via gtags.conf) > > > > Thanks, > > Marcus > > > > -- > Shigio YAMAGUCHI <[email protected]> > PGP fingerprint: > 26F6 31B4 3D62 4A92 7E6F 1C33 969C 3BE3 89DD A6EB >
