🔬 rff: fuzzy finder
Rust
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benches
src
.gitignore
.travis.yml
Cargo.lock
Cargo.toml
LICENSE
README.md

README.md

rff

rff is a fast, simple fuzzy text selector for the terminal, with UTF-8 support. It uses a similar scoring algorithm to fzy.

It currently has a very similar feature set to fzy, although this may change in the future.

Installation

At the moment, installation is best done through Cargo:

$ cargo install --git https://github.com/stewart/rff

If you have a Rust toolchain set up locally, you can also build from source with cargo build --release.

Usage

rff is a drop-in replacement for other fuzzy finders such as fzy or selecta.

For some examples of how these sorts of tools can be used, see selecta's examples.

Benchmarks

Both fzy and rff have a --benchmark mode, with runs the matching/scoring loop 100 times without printing anything. This helps to minimize impact of startup cost and I/O, and better demonstrate actual matching/scoring speed.

This benchmark was run on Arch Linux:

$ find ~/dev/linux -type f > files

$ time fzy -e drivers --benchmark < files
fzy -e drivers --benchmark  1.52s user 0.01s system 202% cpu 0.755 total

$ time rff -s drivers --benchmark < files
rff -s drivers --benchmark < files  4.99s user 0.07s system 356% cpu 1.421 total

Interestingly, the macOS implementation of tolower(3) appears to be not nearly as well optimized, resulting in much slower scoring for fzy:

$ find ~/dev/linux -type f > files

$ time fzy -e drivers --benchmark < files
fzy -e drivers --benchmark < files  18.42s user 0.06s system 356% cpu 5.192 total

$ time rff -s drivers --benchmark < files
rff -s drivers --benchmark < files  8.93s user 0.08s system 349% cpu 2.578 total