If you use a multi-instnace step and set the "throttling" value to something other than 0, OO kicks off a number of branches/instances that are equal to the throttling value. For purposes of this dicussion, let's pretend we've set throttling = 10.
This means that 10 instances are created and kicked off. OO then waits for that block of 10 instances to all complete before it kicks off another block of 10. For workloads with differing durations, this means that any block of 10 instances will only be as fast as the slowest branch in that block of 10 - which is very inefficient.
What should be happening is that when one instance completes, another should be spawned to take it's place, so you get more work done concurrently.
- Increased efficiency/reduced flow runtime
Make it work like a thread pool, not a batch system.