1、执行耗时任务(Parallel.For更快,多线程执行)
using System;
using System.Threading.Tasks; // Must use this namespace
using System.Diagnostics;
using System.Threading;
namespace ExampleParallelFor
{
class Program
{
static void Main()
{
const int maxValues = 100;
//for
int[] squares = new int[maxValues];
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < maxValues; i++)
{
squares[i] = i * i;
Thread.Sleep(10);
}
Console.WriteLine("for time:{0}", sw.ElapsedMilliseconds.ToString());
//Parallel.For
int[] squares1 = new int[maxValues];
Stopwatch sw1= new Stopwatch();
sw1.Start();
Parallel.For(0, maxValues, i => { squares[i] = i * i; Thread.Sleep(10); });
Console.WriteLine("Paralle.For time:{0}", sw1.ElapsedMilliseconds.ToString());
//for (int i = 0; i < maxValues; i++)
//{ Console.WriteLine("Element {0}: {1}", i, squares[i]); }
Console.ReadLine();
}
}
}
执行结果:
2、执行短小(时间短、耗时小)任务(for更快,单线程执行)
using System;
using System.Threading.Tasks; // Must use this namespace
using System.Diagnostics;
using System.Threading;
namespace ExampleParallelFor
{
class Program
{
static void Main()
{
const int maxValues = 100;
//for
int[] squares = new int[maxValues];
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < maxValues; i++)
{
squares[i] = i * i;
//Thread.Sleep(10);
}
Console.WriteLine("for time:{0}", sw.ElapsedMilliseconds.ToString());
//Parallel.For
int[] squares1 = new int[maxValues];
Stopwatch sw1= new Stopwatch();
sw1.Start();
Parallel.For(0, maxValues, i => { squares[i] = i * i;/* Thread.Sleep(10);*/ });
Console.WriteLine("Paralle.For time:{0}", sw1.ElapsedMilliseconds.ToString());
//for (int i = 0; i < maxValues; i++)
//{ Console.WriteLine("Element {0}: {1}", i, squares[i]); }
Console.ReadLine();
}
}
}
执行结果: