Some tasks might take longer to execute than others. If these tasks have no dependencies or have their dependency met, move them to the front of the execution pipeline to shorten the length of overall pipeline execution.
This feature requires runtime statistics to be collected and persisted (local file is fine) for every task and some re-balancing algorithm to run before pipeline execution or even after every task. If no statistics exist, in the case of a first run, no re-balancing happens.
Max heap priority queue seems like a good DS for this.