Sent from Hauptstadt!

ein Blog für den geneigten Leser

ripgrep – grep in schnell

Tags: ,

Kategorie Software Engineering | 4 Kommentare »

Ich bin über ripgrep gestolpert. Das ist wie grep, nur in clever. Und dadurch auch in schnell.

Mit grep durchsucht man Textdokumente nach bestimmten Zeichenketten, etwa Quelltext. Quelltext wird heute normalerweise mittels Git versioniert. ripgrep ist clever und beachtet .gitignore Dateien. Dadurch durchsucht es nur die in Git verwalteten Dateien. Aus diesem cleveren Verhalten folgt: ripgrep ist schnell.

Die Beschränkung der Suche auf die in Git verwalteten Dateien ist sehr sinnvoll. ripgrep versucht auch nicht binäre Dateien zu durchsuchen. In meinem aktuellen Web Projekt werden dadurch weder die gut 600MB an JavaScript Dateien in node_modules/ durchsucht, noch die durch den TypeScript Compiler erzeugten JavaScript und CSS Dateien. Das spart gewaltig an Zeit.

Laufzeit (total)
time grep -r -i suchbegriff2,165s
time rg -i suchbegriff0,029s

Tatsächlich ist mein grep Aufruf Dank Oh My Zsh durch einen Alias optimiert:

grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}

Selbst wenn ich das node_modules/ Verzeichnis und das Verzeichnis mit den vom TypeScript Compiler erzeugten Dateien manuell ignoriere, sinkt die Laufzeit von grep lediglich auf 0,47s.

Ein weiterer Trick von ripgrep ist, dass es mehrere Threads für die Suche nutzt. Im folgenden Beispiel durchsuche ich das node_modules/ Verzeichnis, immerhin rund 60k Dateien.

Laufzeit (total)Laufzeit (cpu)
time rg -i „id.*noodle“0,351s365%
time grep -r -i „id.*noodle“1,352s98%

Während grep lediglich einen CPU Core nutzt, geht ripgrep in die Vollen und verteilt die Arbeit über mehr als 3 CPU Cores.

Ich bin begeistert! :-)

4 Kommentare to “ripgrep – grep in schnell”

  1. Martin sagt:

    Dieser Eintrag ist nicht in Deinem Feed aufgetaucht.

  2. Sebastian sagt:

    Ich kann nicht sagen, was es genau ist, aber irgendwie aktualisiert sich mein ganz ganz alter Feed (https://feeds.feedburner.com/Promotionsblog) nicht mehr. Vielleicht kannst du ja deinen Feedreader auf https://sebstein.hpfsc.de/feed/ umstellen?

  3. Martin sagt:

    Auf den Feed https://sebstein.hpfsc.de/feed/ bezog ich mich. Ich hatte gestern auch noch einmal, um sicher zu gehen, auf den Link oben rechts in Deinem Blog geklickt (was ja zu der Adresse führt) aber da war gestern der letzte Eintrag der mit der Web-Entwicklung. Jetzt ist der Feed auf jeden Fall wieder aktuell. Vielleicht hat mein Browser den gecached.

  4. Matthias Hermsdorf sagt:

    Der Post ist bei auch erst kürzlich aufgetaucht, sagt aber er wäre im Juli veröffentlicht worden. Hier oben steht aber Ende August

Schreiben sie ein Kommentar