Would process substitution be more efficient, especially if you don't need to save the files `OutputA` and `OutputB`, and care only about `Result`? Would this be particularly time-saving because if you have a slow I/O in writing to disk, saving the files `OutputA` and `OutputB` might be the rate-limiting step? combine <(somethingElse InputA) <(somethingElse InputB) > Result Process substitution allows you to put the command inside `<(..here..)` instead of saving the output into a file, and then reading from it as input in the "combine" step. If memory is a limitation, and the size of `outputA` and `outputB` more than what the memory can hold, will it defeat the whole purpose? Will `combine` wait till both processes are completed before it starts running?