Schnellere Suchtechnik als Ripgrep, grep, ag, Git grep, ucg, pt und sift (2016)
(blog.burntsushi.net)Zusammenfassung: Einführung in das neue Kommandozeilen-Suchwerkzeug ripgrep
ripgrepist ein neues Kommandozeilen-Suchwerkzeug, das die Benutzerfreundlichkeit von The Silver Searcher mit der Leistung von GNU grep verbindet.- Es bietet Binärdateien für Linux, macOS und Windows und ist in Rust geschrieben.
- Bei der Suche in einzelnen Dateien und großen Verzeichnissen überzeugt es durch Leistung und Genauigkeit.
- Die Unicode-Unterstützung ist hervorragend, und im Allgemeinen ist es schneller als Werkzeuge, die Memory-Mapping verwenden.
Einführung in ripgrep
Vorteile
- Es ist schneller als andere Suchwerkzeuge und durchsucht keine Dateien, die durch
.gitignoreignoriert werden. - Es bietet die Möglichkeit, nur bestimmte Dateitypen zu durchsuchen oder auszuschließen.
- Es unterstützt viele Funktionen von
grepund bietet immer Unicode-Unterstützung. - Die PCRE2-Regex-Engine kann optional verwendet werden.
- Es unterstützt verschiedene Textkodierungen sowie die Suche in komprimierten Dateien.
- Es unterstützt beliebige Vorverarbeitungsfilter für Eingaben.
Gegenargumente
- Es hält sich nicht an den POSIX-Standard und ist weniger universell als
grep. - Bestimmte Funktionen oder Bugs anderer Werkzeuge gibt es in ripgrep möglicherweise nicht.
- In bestimmten Edge Cases bei der Performance kann ripgrep langsamer sein als andere Werkzeuge.
Installation
- Der Binärname von
ripgrepistrgund es kann auf verschiedenen Plattformen installiert werden. - Es werden Installationsmethoden für Homebrew, Archlinux und Rust-Programmierer bereitgestellt.
- Ein direkter Build aus dem Quellcode ist ebenfalls möglich.
Kurze Tour
- Die Nutzung von
ripgrepauf der Kommandozeile unterscheidet sich nicht wesentlich von anderen ähnlichen Werkzeugen. - Terminalausgabe, Farben und Zeilennummern werden automatisch unterstützt.
- Mit verschiedenen Suchoptionen und Mustern kann flexibel gesucht werden.
Die Struktur von ripgrep
Hintergrund
- Es werden Unterschiede und Gemeinsamkeiten zwischen Nachfolgewerkzeugen von
grepundackerläutert. ripgrepkombiniert die Fähigkeit vongrep, große Dateien zu durchsuchen, mit den „smarten“ Standard-Sucheinstellungen vonack.
Vorbereitung der Dateisuche
- Wichtig sind ein schneller Verzeichnis-Iterator und die Filterung von Dateipfaden.
- Die schnelle Anwendung der Regeln aus
.gitignorebeeinflusst die Performance.
Suche
- Wichtig sind eine schnelle Regex-Engine und Optimierungen für Literale.
- Statt zeilenweise zu suchen oder die gesamte Datei zu verarbeiten, wird in großen Puffern auf einmal gesucht.
Ausgabe
- Die Suchergebnisse werden in einen Speicherpuffer geschrieben und zur Ausgabe nach
stdoutserialisiert.
Methodik
Überblick
- Der Fokus liegt auf den Problemen, die Nutzer lösen wollen, und auf dem Bemühen um faire Benchmarks.
- Verschiedene Werkzeuge werden benchmarked, wobei Unterschiede im Standardverhalten der einzelnen Werkzeuge bei den Vergleichen berücksichtigt werden.
Meinung von GN⁺
Das Wichtigste an diesem Text ist, dass er detailliert erklärt, welche Vorteile ripgrep im Vergleich zu bestehenden Suchwerkzeugen bietet. Besonders die hohe Geschwindigkeit, die Unicode-Unterstützung sowie die Unterstützung verschiedener Dateiformate und Kodierungen können für Nutzer attraktiv sein. Interessant ist der Text auch deshalb, weil er hilft zu verstehen, wie sich ein neues Werkzeug von bestehenden Werkzeugen unterscheidet und welche Auswirkungen diese Unterschiede in der Praxis für Anwender haben können.
1 Kommentare
Hacker-News-Kommentare
project.elund dem Paketdumb-jumpin Emacs nutzt.dumb-jumpbeschränkt die Suche für den aktuellen Dateityp automatisch auf ein bestimmtes Projektverzeichnis und unterstützt auch ein weiteres schnelles Tool namens ag.gitignore-Regeln als nützlich empfunden wird.