Rumah >pembangunan bahagian belakang >C++ >Parallel.ForEach vs. Foreach: Bilakah Anda Harus Menggunakan Yang Mana?

Parallel.ForEach vs. Foreach: Bilakah Anda Harus Menggunakan Yang Mana?

Susan Sarandon
Susan Sarandonasal
2025-01-03 15:04:40468semak imbas

Parallel.ForEach vs. Foreach: When Should You Use Which?

Bagaimana Parallel.ForEach Berbeza daripada Foreach

Foreach gelung dan Parallel.ForEach kedua-duanya digunakan untuk berulang melalui koleksi, tetapi ia beroperasi dengan ketara cara yang berbeza.

Foreach Gelung

  • Melaksanakan lelaran secara berurutan, satu demi satu.
  • Menggunakan urutan tunggal untuk pelaksanaan.
  • Cemerlang dalam mengendalikan proses pantas dengan minimum overhead.

Parallel.ForEach

  • Mendayakan pelaksanaan selari lelaran, menggunakan berbilang urutan.
  • Mempercepatkan proses yang lebih perlahan dengan memanfaatkan concurrency.
  • Memperkenalkan threading overhed, berpotensi memperlahankan pelaksanaan proses pantas.

Contoh Penukaran

Contoh yang disediakan, yang membaca baris daripada fail dan melelang melaluinya menggunakan gelung foreach, boleh ditulis semula dengan Parallel.ForEach seperti berikut:

string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);

Parallel.ForEach(list_lines, (line) =>
{
    // Insert your line-specific operations here
});

Dalam ini penukaran:

  • Kaedah Parallel.ForEach digunakan untuk mengedarkan lelaran ke atas berbilang benang.
  • Pembolehubah baris dalam fungsi lambda mewakili setiap baris dalam koleksi.
  • Operasi khusus yang perlu dilakukan pada setiap baris kini disertakan dalam fungsi lambda.

Atas ialah kandungan terperinci Parallel.ForEach vs. Foreach: Bilakah Anda Harus Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn