.NET中的简单的并行循环Parallel.For和Parallel.ForEach

本文介绍了.NET任务并行库中,如何利用Parallel.For和Parallel.ForEach进行简单的并行循环,以提高代码执行效率。通过对比常规for循环和Parallel.For,以及foreach与Parallel.ForEach的性能,展示并行循环在执行时间上的优势,例如Parallel.For将100次迭代的时间从1845ms减少到494ms,而Parallel.ForEach则将迭代时间降至394ms。
摘要由CSDN通过智能技术生成

这里简单的介绍一下.net中的任务并行库。简单的并行循环Parallel.For和Parallel.ForEach。我们常见的for和foreach循环分别对应并行循环Parallel.For和Parallel.ForEach。

参考文档:https://msdn.microsoft.com/zh-cn/library/system.threading.tasks.parallel_methods(v=vs.110).aspx

对比for循环和Parallel.For的性能

        static void Main(string[] args)
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();
            int[] nums=new int[100];
            for (int j = 0; j < 100; j++)
            {
                nums[j] = j * 100000 + j;
            }
            Debug.WriteLine(string.Format("循环开始:{0,4:N0}ms", watch.Elapsed.TotalMilliseconds));
            for (int i = 0; i < nums.Length; i++)
            {
                LoopRun(nums[i]);
            }
            //Parallel
### 回答1: Parallel.For 和 Parallel.ForEach 是 C# System.Threading.Tasks 命名空间并行循环运算符。 Parallel.For 用于并行循环迭代固定数量的迭代次数。例如: ``` Parallel.For(0, 10, i => { Console.WriteLine("Iteration {0}", i); }); ``` Parallel.ForEach 用于并行循环迭代集合的元素。例如: ``` List<string> words = new List<string> { "apple", "banana", "cherry" }; Parallel.ForEach(words, word => { Console.WriteLine("Word: {0}", word); }); ``` 这两种运算符都会在多个线程并行运行,可以帮助提高程序的运行效率。 ### 回答2: Parallel.For和Parallel.ForEach.NET Framework提供的用于并行处理迭代操作的两个方法。 首先,我们来看一下Parallel.For的例子。假设我们有一个包含100个数字的数组,我们想对每个数字进行平方操作,并在控制台输出。我们可以使用Parallel.For来实现并行化的迭代处理。代码如下: ``` int[] numbers = Enumerable.Range(1, 100).ToArray(); Parallel.For(0, numbers.Length, i => { numbers[i] = numbers[i] * numbers[i]; Console.WriteLine(numbers[i]); }); ``` 在这个例子,我们使用Enumerable.Range方法创建了一个包含1到100的数组。然后,我们使用Parallel.For方法并行遍历数组的每个元素。对于每个元素,我们将其平方,并在控制台输出结果。 接下来,我们来看一下Parallel.ForEach的例子。假设我们有一个字符串列表,我们想要并行地将每个字符串转换为大写,并将结果存储在新的列表。我们可以使用Parallel.ForEach来实现并行化的迭代处理。代码如下: ``` List<string> strings = new List<string> { "hello", "world", "parallel", "foreach" }; List<string> upperCaseStrings = new List<string>(); Parallel.ForEach(strings, str => { upperCaseStrings.Add(str.ToUpper()); }); foreach (string str in upperCaseStrings) { Console.WriteLine(str); } ``` 在这个例子,我们创建了一个包含几个字符串的列表。然后,我们使用Parallel.ForEach方法并行地遍历列表的每个字符串。对于每个字符串,我们将其转换为大写,并将结果添加到一个新的列表。最后,我们使用普通的foreach循环,在控制台输出转换为大写的字符串。 总结起来,Parallel.For和Parallel.ForEach.NET Framework提供的用于并行处理迭代操作的两个方法。它们可以帮助我们以更高效的方式处理大规模的迭代任务,并发挥多核处理器的优势。 ### 回答3: Parallel.For 是 .NET Framework 的一个多线程并行编程的方法,它允许我们以一种简单的方式创建一个 for 循环并在多个线程并行执行循环的迭代。 下面是一个使用 Parallel.For 方法的示例代码: ``` Parallel.For(0, 10, i => { Console.WriteLine("当前线程ID:{0},i的值为:{1}", Thread.CurrentThread.ManagedThreadId, i); }); ``` 上述代码会创建一个从0到9的循环,并使用多个线程并行地执行循环的每个迭代。在控制台输出,可以看到当前线程的ID和迭代的值。 而 Parallel.ForEach 方法也是 .NET Framework 的一个多线程并行编程的方法,它允许我们以一种简单的方式遍历一个集合并在多个线程并行执行每个元素的操作。 下面是一个使用 Parallel.ForEach 方法的示例代码: ``` List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; Parallel.ForEach(numbers, number => { Console.WriteLine("当前线程ID:{0},number的值为:{1}", Thread.CurrentThread.ManagedThreadId, number); }); ``` 上述代码会创建一个包含整数的 List 集合,并使用多个线程并行地执行每个元素的操作。在控制台输出,可以看到当前线程的ID和每个元素的值。 总结来说,Parallel.For 和 Parallel.ForEach 提供了一种简单的方式在多个线程并行执行循环或集合的操作。通过使用这些方法,我们可以更好地利用多核处理器和多线程编程,从而实现更高效的并行计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值