Teknik pencarian yang lebih cepat daripada ripgrep, grep, ag, Git grep, ucg, pt, dan sift (2016)
(blog.burntsushi.net)Ringkasan: pengenalan alat pencarian baris perintah baru, ripgrep
ripgrepadalah alat pencarian baris perintah baru yang menggabungkan kemudahan penggunaan The Silver Searcher dengan performa GNU grep.- Menyediakan biner untuk Linux, Mac, dan Windows serta ditulis dengan Rust.
- Unggul dalam performa dan akurasi saat mencari pada satu berkas maupun direktori besar.
- Dukungan Unicode sangat baik, dan umumnya lebih cepat daripada alat yang menggunakan memory map.
Pengenalan ripgrep
Kelebihan
- Lebih cepat daripada alat pencarian lain, dan tidak mencari dalam berkas yang diabaikan oleh
.gitignore. - Menyediakan fitur untuk mencari hanya jenis berkas tertentu atau mengecualikannya.
- Mendukung banyak fitur
grepdan selalu mendukung Unicode. - Dapat secara opsional menggunakan mesin regular expression PCRE2.
- Mendukung berbagai encoding teks dan pencarian pada berkas terkompresi.
- Mendukung filter pra-pemrosesan input yang arbitrer.
Pendapat yang menentang
- Tidak mematuhi standar POSIX dan tidak seumum
grep. - Fitur atau bug tertentu yang ada di alat lain mungkin tidak ada di ripgrep.
- Dalam edge case performa tertentu, ripgrep bisa lebih lambat daripada alat lain.
Instalasi
- Nama biner
ripgrepadalahrg, dan dapat dipasang di berbagai platform. - Menyediakan metode instalasi untuk Homebrew, Archlinux, dan programmer Rust.
- Juga bisa dibangun langsung dari source.
Tur singkat
- Penggunaan baris perintah
ripgreptidak jauh berbeda dari alat serupa lainnya. - Secara otomatis mendukung output terminal, warna, tampilan nomor baris, dan lain-lain.
- Pencarian dapat dilakukan dengan berbagai opsi dan pola pencarian.
Struktur ripgrep
Latar belakang
- Menjelaskan perbedaan dan persamaan antara
grepdan turunan alat sepertiack. ripgrepmenggabungkan kemampuangrepuntuk mencari pada berkas besar dengan pengaturan default pencarian "cerdas" dariack.
Persiapan pencarian berkas
- Penggunaan iterator direktori yang cepat dan penyaringan path berkas sangat penting.
- Penerapan cepat aturan dalam berkas
.gitignorememengaruhi performa.
Pencarian
- Mesin regular expression yang cepat dan optimisasi literal sangat penting.
- Mencari dalam buffer besar sekaligus, bukan per baris atau seluruh berkas sekaligus.
Output
- Hasil pencarian ditulis ke buffer memori lalu diserialisasi ke
stdoutuntuk ditampilkan.
Metodologi
Gambaran umum
- Berfokus pada masalah yang ingin diselesaikan pengguna dan berupaya membuat benchmark yang adil.
- Membandingkan berbagai alat sambil mempertimbangkan perbedaan perilaku default masing-masing alat.
Pendapat GN⁺
Hal terpenting dari tulisan ini adalah bahwa ripgrep menjelaskan secara rinci keunggulannya dibanding alat pencarian yang sudah ada. Khususnya, performa cepat, dukungan Unicode, serta dukungan untuk berbagai format berkas dan encoding dapat menjadi alasan yang menarik bagi pengguna. Tulisan ini menarik karena membantu memahami bagaimana alat baru berbeda dari alat yang sudah ada, dan bagaimana perbedaan itu dapat memengaruhi pengguna secara nyata.
1 komentar
Komentar Hacker News