-
Notifications
You must be signed in to change notification settings - Fork 542
Description
I just noticed that fold
calls identity
many more times than number of threads in thread pool. In case identity
is a non-trivial operation, it might be quite expensive to call it unnecessarily.
Would be great if its returned value was repurposed for folding of multiple sublists.
This discovery resulted from rewriting https://github.com/supranational/blst/blob/0d46eefa45fc1e57aceb42bba0e84eab3a7a9725/bindings/rust/src/lib.rs#L1110-L1147 with rayon (code there essentially does work stealing manually) and seeing significantly slower benchmark results.
Here is what I tried to do: https://github.com/nazar-pc/blst/blob/7d1074e7df3f31dc8b8acfde3260ac9ceac8f0d9/bindings/rust/src/lib.rs#L1092-L1128
The reason why I believe it is slower is that more identity
elements are created and due to cryptography involved reducing more elements takes more time.
Probably duplicate of #840 that original author decided to close, but I believe there is a value in ability to do something like this in rayon (or maybe there is and I just don't see it).