Need to explain in the readme what it does, and what for.
Why would I need such an abstraction? What is the cost?
Why is that any better than calling the function with a single argument in the first place?
I assume here it is maintaining a vector of futures and and a sibling vector of input values. And when this vector reaches the window size or something like that, it calls the original function with must returns a vector of results, which are then used to resolve the futures.
The API is great. Will definitely try it out. I have a use case already. How difficult would it be to extend this to support timed flushes? Like, every 200ms or so, regardless the fill of the buffer?
Ah gotcha. So one use case that immediately comes to mind with batching is retries with batch bisection. While you wouldn’t need it to be arbitrarily dynamic, it would be useful to support some sort of retry aware divide-by-two mechanism
Why would I need such an abstraction? What is the cost?
Why is that any better than calling the function with a single argument in the first place?
I assume here it is maintaining a vector of futures and and a sibling vector of input values. And when this vector reaches the window size or something like that, it calls the original function with must returns a vector of results, which are then used to resolve the futures.