Maybe there are cases where a long string of awk|something|other|sort|uniq is not the problem, but forking an extra process for cat is.
And maybe there's a mismatch between pipes, files and mmap today. Splice seems like a reasonable fix (if we splice all the things, awk, grep etc).
Finally, I just think:
cat input.txt \
| filter1 args \
| filter2 args \
| reduction \
| ouput-formater
Reads better than having to tack on an <input.txt at the end, or special-case the first filter to be (... And also open a file).