Task scheduling is the most important requirement in cloud computing, which plays a vital role in enhancing the quality of services and reducing power consumption and processing time. This paper presents a self-adaptive differential evolution (SADE) algorithm for scheduling tasks in cloud computing. The proposed method models task scheduling as a multi-modal optimization problem with the objectives of minimizing makespan and energy consumption. The experiments on scheduling benchmarks show the superiority of the proposed method in most test cases compared with the peer methods.