ホームページ >バックエンド開発 >C++ >.NET の従来の Foreach ループと比較して、Parallel.ForEach はどのようにパフォーマンスを向上させますか?

.NET の従来の Foreach ループと比較して、Parallel.ForEach はどのようにパフォーマンスを向上させますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-06 00:36:38703ブラウズ

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

Parallel.ForEach による並列処理

並列プログラミングは、複数のプロセッサ コアを利用することでアプリケーションのパフォーマンスを向上させます。 Parallel.ForEach は、.NET アプリケーションでの並列処理を簡素化する強力な構造です。

Foreach ループと Parallel.ForEach

従来の foreach ループは、反復を順番に実行します。シングルスレッド。一方、Parallel.ForEach はワークロードを複数のスレッドに分散し、反復の同時実行を可能にします。

Foreach ループの特徴:

  • 順次実行反復回数
  • シングルスレッド使用率
  • スレッドのオーバーヘッドが大きくない素早い操作に最適です

Parallel.ForEach の特性:

  • 並列実行反復
  • 複数のスレッド使用率
  • 並列化によりパフォーマンスが向上する遅い操作に有益です

Parallel.ForEach への変換

指定されたコード スニペットを次のように変換するにはParallel.ForEach:

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

次の例は、foreach ループと 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");
        }
    }
}

の違いを示しています。 出力

出力は次のとおりです。 Parallel.ForEach は反復を並列に実行し、従来の foreach ループと比較して全体の処理時間を短縮します。

以上が.NET の従来の Foreach ループと比較して、Parallel.ForEach はどのようにパフォーマンスを向上させますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。