Advertisement
andruhovski

Parallel Demo

Sep 21st, 2018
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.57 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Prog20180921
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int[] arr1 = new int[1000000];
  14.             var rand = new Random();
  15.             for (int i = 0; i < arr1.Length; i++)
  16.             {
  17.                arr1[i]=rand.Next(100,300);
  18.             }
  19.             var time1 = DateTime.Now.Millisecond;
  20.             long res1 = OneThread(arr1);
  21.             var time2 = DateTime.Now.Millisecond;
  22.             long res2 = ParallelThread(arr1);
  23.             var time3 = DateTime.Now.Millisecond;
  24.  
  25.             Console.WriteLine("{0} {1}",
  26.                 time2-time1, time3-time2);
  27.         }
  28.  
  29.         private static long ParallelThread(int[] arr)
  30.         {
  31.             int numCores = Environment.ProcessorCount;
  32.             object[] locks = new object[numCores];
  33.             for (int i = 0; i < locks.Length; ++i)
  34.                 locks[i] = new object();
  35.             long[] sums = new long[numCores];
  36.             Parallel.For(0, arr.Length, (i) =>
  37.             {
  38.                 lock (locks[i % numCores])
  39.                     sums[i % numCores] += arr[i];
  40.             });
  41.  
  42.             long res = 0;
  43.             foreach (var item in sums) res += item;
  44.             return res;
  45.         }
  46.  
  47.         private static long OneThread(int[] arr)
  48.         {
  49.             long res = 0;
  50.             for (int i = 0; i < arr.Length; i++)
  51.             {
  52.                 res += arr[i];
  53.             }
  54.             return res;
  55.         }
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement