Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Parallel.ForEach Meningkatkan Prestasi Berbanding dengan Gelung Foreach Tradisional dalam .NET?

Bagaimanakah Parallel.ForEach Meningkatkan Prestasi Berbanding dengan Gelung Foreach Tradisional dalam .NET?

Susan Sarandon
Susan Sarandonasal
2025-01-06 00:36:38733semak imbas

How Does Parallel.ForEach Improve Performance Compared to a Traditional Foreach Loop in .NET?

Pemprosesan Selari dengan Parallel.ForEach

Pengaturcaraan selari meningkatkan prestasi aplikasi dengan memanfaatkan berbilang teras pemproses. Parallel.ForEach ialah binaan berkuasa yang memudahkan pemprosesan selari dalam aplikasi .NET.

Foreach Loop vs. Parallel.ForEach

Gelung foreach tradisional melakukan lelaran secara berurutan pada benang tunggal. Parallel.ForEach, sebaliknya, mengagihkan beban kerja merentas berbilang urutan, membolehkan pelaksanaan serentak lelaran.

Ciri-ciri Gelung Foreach:

  • Pelaksanaan berurutan daripada lelaran
  • Urut tunggal penggunaan
  • Sesuai untuk operasi pantas di mana overhed benang tidak penting

Ciri-ciri Parallel.ForEach:

  • Pelaksanaan selari bagi lelaran
  • Berbilang utas penggunaan
  • Bermanfaat untuk operasi perlahan di mana penyejajaran meningkatkan prestasi

Menukar kepada Parallel.ForEach

Untuk menukar coretan kod yang diberikan kepada Parallel.ForEach:

Parallel.ForEach(list_lines, line =>
{
    // My Stuff
});

Contoh

Contoh berikut menunjukkan perbezaan antara gelung foreach dan Parallel.ForEach:

using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ParallelForEachExample
{
    class Program
    {
        static void Main()
        {
            var lines = File.ReadAllLines("proxylist.txt");
            var list_lines = new List<string>(lines);

            Console.WriteLine("Traditional foreach loop");
            var watch = Stopwatch.StartNew();
            foreach (var line in list_lines)
            {
                Console.WriteLine(line);
                Thread.Sleep(10);
            }
            watch.Stop();
            Console.WriteLine($"foreach loop execution time: {watch.ElapsedMilliseconds} ms");

            Console.WriteLine("Using Parallel.ForEach");
            watch = Stopwatch.StartNew();
            Parallel.ForEach(list_lines, line =>
            {
                Console.WriteLine(line);
                Thread.Sleep(10);
            });
            watch.Stop();
            Console.WriteLine($"Parallel.ForEach() execution time: {watch.ElapsedMilliseconds} ms");
        }
    }
}

Output

Output akan menunjukkan bahawa Parallel.ForEach melaksanakan lelaran secara selari, mengurangkan masa pemprosesan keseluruhan berbanding gelung foreach tradisional.

Atas ialah kandungan terperinci Bagaimanakah Parallel.ForEach Meningkatkan Prestasi Berbanding dengan Gelung Foreach Tradisional dalam .NET?. 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