Parallel.ForEach vs. Task.Factory.StartNew: Perbezaan halus dalam pemprosesan koleksi selari
Apabila memproses operasi pengumpulan secara selari, pembangun selalunya memilih Parallel.ForEach atau Task.Factory.StartNew. Walaupun kedua-duanya menyediakan pelaksanaan selari, pendekatan dan kesannya terhadap pelaksanaan berbeza.
Perbandingan Parallel.ForEach dan Task.Factory.StartNew
Parallel.ForEach menggunakan Partitioner
Pertimbangan kecekapan
Untuk memaksimumkan kecekapan, Parallel.ForEach ialah pilihan yang lebih baik. Penggunaan pembahagiannya dengan ketara mengurangkan overhed, terutamanya dalam koleksi besar. Sebaliknya, Task.Factory.StartNew mencipta satu tugasan, tetapi mungkin menambah overhed yang tidak perlu dan memperlahankan pelaksanaan.
Pelaksanaan tak segerak
Task.Factory.StartNew berjalan secara tidak segerak, membenarkan kod panggilan terus dilaksanakan tanpa menyekat. Tingkah laku ini boleh direplikasi dengan membungkus Parallel.ForEach dalam Task.Factory.StartNew panggilan. Walau bagaimanapun, partition masih digunakan untuk memastikan kecekapan.
Pembahagian tersuai
Parallel.ForEach menyediakan kawalan tambahan ke atas pembahagian dengan membenarkan pelaksanaan Pembahagian tersuai
Ringkasan
Apabila pemprosesan selari tugas pengumpulan diperlukan, Parallel.ForEach ialah pilihan yang lebih cekap. Walau bagaimanapun, jika pelaksanaan tak segerak diperlukan, menggunakan Task.Factory.StartNew bersama-sama dengan Parallel.ForEach boleh menyediakan penyelesaian yang sesuai yang mengimbangi kecekapan dan kefungsian tak segerak.
Atas ialah kandungan terperinci Parallel.ForEach vs. Task.Factory.StartNew: Mana yang Terbaik untuk Pemprosesan Koleksi Selari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!