Would process substitution be more efficient especially if you don't need to save the files OutputA and OutputB, and only care about Result. Would this be particularly timesaving 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?