Ripgrep, grep, ag, Git grep, ucg, pt ve sift'ten daha hızlı arama tekniği (2016)
(blog.burntsushi.net)Özet: yeni komut satırı arama aracı ripgrep'e giriş
ripgrep, The Silver Searcher'ın kullanım kolaylığını GNU grep'in performansıyla birleştiren yeni bir komut satırı arama aracıdır.- Linux, Mac ve Windows için ikili dosyalar sunar ve Rust ile yazılmıştır.
- Tek dosya ve büyük dizin aramalarında performans ve doğruluk açısından öne çıkar.
- Unicode desteği mükemmeldir ve bellek eşlemeli araçlardan genellikle daha hızlıdır.
ripgrep'e giriş
Avantajlar
- Diğer arama araçlarından daha hızlıdır ve
.gitignoretarafından yok sayılan dosyaları aramaz. - Yalnızca belirli dosya türlerinde arama yapma veya bunları hariç tutma özelliği sunar.
grepin birçok özelliğini destekler ve Unicode'u her zaman destekler.- İsteğe bağlı olarak PCRE2 düzenli ifade motorunu kullanabilir.
- Çeşitli metin kodlamalarını ve sıkıştırılmış dosyalarda aramayı destekler.
- İsteğe bağlı girdi ön işleme filtrelerini destekler.
Karşı görüşler
- POSIX standardına uymaz ve
grepkadar evrensel değildir. - Diğer araçlarda bulunan bazı belirli özellikler veya hatalar ripgrep'te olmayabilir.
- Performansın bazı uç durumlarında ripgrep, diğer araçlardan daha yavaş olabilir.
Kurulum
ripgrepin ikili dosya adırg'dir ve çeşitli platformlarda kurulabilir.- Homebrew, Archlinux ve Rust programcıları için kurulum yöntemleri sunulur.
- Kaynaktan doğrudan derlemek de mümkündür.
Hızlı tur
ripgrepin komut satırı kullanımı, diğer benzer araçlardan çok farklı değildir.- Terminal çıktısı, renkler ve satır numarası gösterimini otomatik olarak destekler.
- Çeşitli arama seçenekleri ve desenlerle arama yapılabilir.
ripgrep'in yapısı
Arka plan
grepileackin türevi araçlar arasındaki farklar ve ortak noktalar açıklanır.ripgrep,grepin büyük dosya arama yeteneğini veackin "akıllı" arama varsayılanlarını birleştirir.
Dosya aramaya hazırlık
- Hızlı dizin yineleyicisi kullanımı ve dosya yolu filtreleme önemlidir.
.gitignoredosyasındaki kuralların hızlı uygulanması performansı etkiler.
Arama
- Hızlı bir düzenli ifade motoru ve literal optimizasyonları önemlidir.
- Tüm dosyayı satır satır değil, büyük arabellekler hâlinde bir kerede arar.
Çıktı
- Arama sonuçlarını bir bellek arabelleğine yazar ve bunu
stdouta serileştirerek çıktı verir.
Metodoloji
Genel bakış
- Kullanıcının çözmeye çalıştığı probleme odaklanır ve adil benchmark'lar yapmaya çalışır.
- Çeşitli araçları benchmark eder ve her aracın varsayılan davranış farklarını dikkate alarak karşılaştırır.
GN⁺ görüşü
Bu yazıdaki en önemli nokta, ripgrepin mevcut arama araçlarına kıyasla hangi avantajlara sahip olduğunu ayrıntılı biçimde açıklamasıdır. Özellikle yüksek performans, Unicode desteği ve çeşitli dosya biçimleri ile kodlamalara verilen destek, bunu kullanıcılar için çekici kılan nedenler olabilir. Yazının ilgi çekici yanı, yeni bir aracın mevcut araçlardan nasıl farklılaştığını ve bu farkın gerçek kullanıcıları nasıl etkileyebileceğini anlamaya yardımcı olmasıdır.
1 yorum
Hacker News görüşleri
ripgrepvefzfkombinasyonu çok hızlı; bundan yararlanan bir PowerShell fonksiyonu örneği paylaşılıyor. Bu fonksiyon önceripgrepile arama yapıyor, ardındanfzfile bulanık arama gerçekleştiriyor vebataracılığıyla sonucun bağlamını gösteriyor. Bu yöntem, birden fazla depo projesinde belirli içeriğin konumunu hızlıca bulmak için kullanışlı.project.elpaketi vedumb-jumppaketiyleripgrepkullanma yöntemi tanıtılıyor.dumb-jump, belirli bir proje dizininde mevcut dosya türüne yönelik aramayı otomatik olarak sınırlandırıyor veagadlı başka bir hızlı aracı da destekliyor.ripgrepin, Node.js wrapper'ı üzerinden VS Code arama işlevini sağlıyor olması ilginç bulunuyor.ripgrepkullanıcıları,grepe kıyasla kullanım kolaylığı ve hız artışını başlıca nedenler olarak gösteriyor; özelliklegitignorekurallarını otomatik uygulama özelliğini faydalı buluyorlar.ripgrepveaggibi paralelleştirilmişgrepalternatifleri,grepten çok daha hızlı olduğu için hız farkının artık büyük bir ölçüt olmadığı, bu araçların başka açılardan değerlendirilmesi gerektiği belirtiliyor.ripgrepin ilk duyurusunun 2016'da yapıldığına dikkat çekiliyor ve başlıkta yıl bilgisinin yer alması öneriliyor.qgrepin indeks kullanarak yüksek hız sunduğu, ancak UTF8 çok satırlı eşleşme gerektiğinderipgrepin yavaşlayabildiği belirtiliyor.ripgrepkullanan Consult paketi üzerinden proje genelinde düzenleme yapmaya yönelik kullanışlı bir iş akışı paylaşılıyor.ripgrep-allsürümünün PDF ve doc dosyaları gibi diğer belge türlerinde de çalıştığı bilgisi veriliyor.grepin neden değiştirilmediği veya iyileştirilmediği sorgulanıyor ve bu konunun biraz eski olduğu değerlendiriliyor.