首页 >后端开发 >C++ >与 .NET 中的传统 Foreach 循环相比,Parallel.ForEach 如何提高性能?

与 .NET 中的传统 Foreach 循环相比,Parallel.ForEach 如何提高性能?

Susan Sarandon
Susan Sarandon原创
2025-01-06 00:36:38662浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn