Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Prog20180921
- {
- class Program
- {
- static void Main(string[] args)
- {
- int[] arr1 = new int[1000000];
- var rand = new Random();
- for (int i = 0; i < arr1.Length; i++)
- {
- arr1[i]=rand.Next(100,300);
- }
- var time1 = DateTime.Now.Millisecond;
- long res1 = OneThread(arr1);
- var time2 = DateTime.Now.Millisecond;
- long res2 = ParallelThread(arr1);
- var time3 = DateTime.Now.Millisecond;
- Console.WriteLine("{0} {1}",
- time2-time1, time3-time2);
- }
- private static long ParallelThread(int[] arr)
- {
- int numCores = Environment.ProcessorCount;
- object[] locks = new object[numCores];
- for (int i = 0; i < locks.Length; ++i)
- locks[i] = new object();
- long[] sums = new long[numCores];
- Parallel.For(0, arr.Length, (i) =>
- {
- lock (locks[i % numCores])
- sums[i % numCores] += arr[i];
- });
- long res = 0;
- foreach (var item in sums) res += item;
- return res;
- }
- private static long OneThread(int[] arr)
- {
- long res = 0;
- for (int i = 0; i < arr.Length; i++)
- {
- res += arr[i];
- }
- return res;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement