Hello 👋 I've been benchmarking https://github.com/googleforgames/quilkin and while benchmarking I noticed that we spend a significant amount of CPU time just allocating and dropping the Arc in GuardIter (~5–10%). Because we need to iterate over the map in every packet. In our case the use of the Arc is not really needed because we're immediately consuming the iterator.
I was wondering if there's any interest in providing support for iterators that don't use Arc, or providing a way to map/reduce that doesn't involve Arc? I think this would provide significant performance benefits for those who are trying to perform an operation over the whole map immediately over the current implementation.
Hello 👋 I've been benchmarking https://github.com/googleforgames/quilkin and while benchmarking I noticed that we spend a significant amount of CPU time just allocating and dropping the
Arc
inGuardIter
(~5–10%). Because we need to iterate over the map in every packet. In our case the use of the Arc is not really needed because we're immediately consuming the iterator.I was wondering if there's any interest in providing support for iterators that don't use Arc, or providing a way to map/reduce that doesn't involve Arc? I think this would provide significant performance benefits for those who are trying to perform an operation over the whole map immediately over the current implementation.
Code
Flamegraph