次のタスクに進むためにお互いを完了する必要がないため、多くのタスクを同時に処理しようとしています。私は同期プロセスを使用して、それを非同期にしようとしました。ただし、パフォーマンスを測定する場合、両方の方法が完了するまでにまったく同じ時間(約30秒)かかると思います...非同期がより高速になると思います... 1)以下が正しい場合2)非同期が何に役立つかを理解する(これが問題だと思います)。
public class ExpensiveTask {
private int _seed;
public ExpensiveTask(int seed){ _seed = seed; }
public Process() { //TODO various things }
}
public class Controller {
public static void main(string[] args){
var program = new Controller();
program.RunAsync(); // Runtime 36.9s
program.Run(); // Runtime 36.6s
}
void Run(){
Process(1);
Process(2);
Process(3);
}
async void RunAsync(){
var taskList = new List<Task>();
taskList.Add(ProcessAsync(1));
taskList.Add(ProcessAsync(2));
taskList.Add(ProcessAsync(3));
await Task.WhenAll(taskList);
}
async Task ProcessAsync(int seed){
var task = new ExpensiveTask(seed);
task.Process();
}
void Process(int seed){
var task = new ExpensiveTask(seed);
task.Process();
}
}