We’ve made significant progress in making both Rescue and Poseidon much faster over the last couple of years. The numbers I’m currently getting on an M1 Pro (single core) are like this:
- Rescue Prime which we use in Polygon Miden: ~195K hashes per second (pure Rust code).
- Poseidon implemented by Polygon Zero: ~770K hashes per second (and could be up to 2x faster when complied with vectorized instructions).
Both of these are over an order of magnitude faster than what I had originally shared in this thread. The improvements come from a variety of places, but to mention two most important ones:
- Using a fast small field (specifically, we use a field with p = 2^{64} - 2^{32} + 1).
- Selecting an MDS matrix of special form which dramatically decreases the number of modular reductions needed for MDS matrix multiplication.