My Parallel implementation has improved a lot since I first released it, supporting more and more features of GNU Parallel with each new commit. With the latest release, 0.4.1, Parallel now supports permutating multiple input lists together using a custom permutation algorithm.
I needed to have support for GNU Parallel’s permutation feature, which permutates multiple input lists together into a single list. I thought that it might be a good idea of I were to first create a separate project which provides that function outside of Parallel, so I have created a new project which is simultaneously a library and application: Permutate.
it’s a simple, custom generic Rust-based algorithm which creates an Iterator that works entirely with references, for permutating data types like arrays of strings. It supports permutating individual lists as well as multiple lists, as in the use case of Parallel.
I’ve added a benchmark contained within which you can replicate on your systems. I’m able to generate 2.14 million permutations per second on an i5 2410M mobile CPU. I’m not sure if that’s a good value or not for a permutator-type application, but it seems sufficient enough for the use case in Parallel.