1. A method for automatically optimizing scheduling of tasks in an extract-transform-load (ETL) package by a control flow application comprising the steps of: the control flow application running an automated process for the ETL package to optimize scheduling of a plurality of tasks included in the ETL package, wherein each of the plurality of tasks is an ETL task operable to be executed sequentially or in parallel with the other tasks, the automated process comprising: the control flow application running a profiling phase to execute each of the plurality of tasks in the ETL package at least one time and measure a plurality of performance metrics; and the control flow application running an optimization phase to optimize subsequent executions of the plurality of tasks in the ETL package, wherein, while running the optimization phase, the control flow application uses at least a portion of the performance metrics to make at least one adjustment to the ETL package by adjusting execution of at least one of the plurality of tasks.