Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using ConsoleApp1;
- class Program
- {
- static int repeat = 1000;
- class TableRecord
- {
- public int N;
- public int M;
- public float time;
- public float effect = 0f;
- public TableRecord(int N, int M, float time)
- {
- this.N = N;
- this.M = M;
- this.time = time;
- }
- }
- static void Main(string[] args)
- {
- int[] N = { 100, 2000, 10000, 30000 };
- int[] M = { 2, 3, 4, 5, 10 };
- Measure(new float[] { 0, 0, 0, 0 }, N, SimpleNumbersСalculatorSeq.Calculate);
- Console.WriteLine("Последовательно");
- List<TableRecord> seqTable = Measure(new float[] { 0, 0, 0, 0 }, N, SimpleNumbersСalculatorSeq.Calculate);
- PrintTable(seqTable);
- float[] seqTime = GetSeqTime(seqTable);
- Console.WriteLine();
- Console.WriteLine("Метод 1");
- PrintTable(Measure(seqTime, N, M, SimpleNumbersCalculatorDataParallel.Calculate));
- Console.WriteLine();
- Console.WriteLine("Метод 2");
- PrintTable(Measure(seqTime, N, M, SimpleNumbersCalculatorBaseParallel.Calculate));
- Console.WriteLine();
- Console.WriteLine("Метод 3");
- PrintTable(Measure(seqTime, N, SimpleNumbersCalculatorPoolParallel.Calculate));
- Console.WriteLine();
- Console.WriteLine("Метод 4");
- PrintTable(Measure(seqTime, N, M, SimpleNumbersCalculatorPluckParallel.Calculate));
- Console.WriteLine();
- //numbers.ToList().ForEach(x => Console.Write(x + " "));
- }
- static List<TableRecord> Measure(float[] seqTime, int[] N, int[] M, Func<int, int, float> f)
- {
- List<TableRecord> table = new List<TableRecord>();
- for (int i = 0; i < N.Length; i++)
- {
- foreach(int m in M)
- {
- List<float> time = new List<float>();
- for(int j = 0; j < repeat; j++)
- {
- time.Add(f(N[i], m));
- }
- TableRecord t = new TableRecord(N[i], m, time.Average());
- t.effect = seqTime[i] / t.time;
- table.Add(t);
- }
- }
- return table;
- }
- static List<TableRecord> Measure(float[] seqTime, int[] N, Func<int, float> f)
- {
- List<TableRecord> table = new List<TableRecord>();
- for (int i = 0; i < N.Length; i++)
- {
- List<float> time = new List<float>();
- for (int j = 0; j < repeat; j++)
- {
- time.Add(f(N[i]));
- }
- TableRecord t = new TableRecord(N[i], 1, time.Average());
- t.effect = seqTime[i] / t.time;
- table.Add(t);
- }
- return table;
- }
- static void PrintTable(List<TableRecord> t)
- {
- t.ForEach(x => { Console.WriteLine(x.N + " " + x.M + " " + x.time + " " + x.effect); });
- }
- static float[] GetSeqTime(List<TableRecord> t)
- {
- return t.Select((t) => t.time).ToArray();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement