A 3x faster implementation of cat, using splice
APACHE-2.0 License
fcat
, short for fastcat, is a cat
implementation in Rust using Linux's splice
syscall.
With that little trick, it's more than three times as fast as the system cat
in our benchmarks.
Read the announcement here.
⚠️ This project is currently broken on newer Linux versions (5.9+) because of some changes
concerning the splice
system call. (See here and here.) This can't be fixed unless changes to the kernel get made.
cat myfile | pv -r > /dev/null
[1.90GiB/s]
fcat myfile | pv -r > /dev/null
[5.90GiB/s]
Note: Only works on Linux. (But you can send me a pull request for other operating systems.)
cargo install fcat
fcat file1 file2 file3
cat
provides.If you run fcat /dev/zero >> myfile
, it will fail with exit code EINVAL
because, according to the splice manpage: "The target file is opened in append mode."
fcat is licensed under either of
at your option.