Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Dynamic;
- using System.Threading;
- using System.Threading.Tasks;
- namespace ConsoleApp1
- {
- class Program
- {
- static double fun(double x)
- {
- double ans = 0;
- for (int k = 1; k <= Math.Max(20, (int)20 * Math.Abs(x)); ++k)
- for (int j = 1; j <= Math.Max(20, (int)20 * Math.Abs(x)); ++j)
- {
- double x_2 = x * x;
- ans += x_2 * (k + j) / (x_2 + k * k * k + j * j * j) * Math.Cos(k * x) * Math.Sin(j * x);
- }
- return ans;
- }
- static void Main()
- {
- const int N = 200;
- double[] X = new double[N + 1];
- for (int k = 0; k <= N; k++) {
- X[k] = 100 * Math.Cos(1.0 * k);
- }
- double[] y1 = new double[N + 1];
- double[] y2 = new double[N + 1];
- double S = 0;
- Int64 Tms = (DateTime.Now).Ticks;
- for (int i = 0; i <= N; ++i)
- {
- double val = fun(X[i]);
- S += val;
- y1[i] = val;
- }
- Tms = (DateTime.Now).Ticks - Tms;
- TimeSpan Tmss1 = new TimeSpan(Tms);
- Console.WriteLine("S=" + S.ToString());
- Console.WriteLine("Время выполнения последовательной операции for "+(Tmss1.TotalSeconds).ToString()+" c");
- Object obj = new Object();
- S = 0;
- Tms = (DateTime.Now).Ticks;
- Parallel.For(0, N + 1, k => { double val = fun(X[k]); S += val; y2[k] = val; });
- Tms = (DateTime.Now).Ticks - Tms;
- TimeSpan Tmss2 = new TimeSpan(Tms);
- Console.WriteLine("S=" + S.ToString());
- Console.WriteLine("Время выполнения параллельного метода For " + (Tmss2.TotalSeconds).ToString() + " c");
- double a = Tmss1 / Tmss2;
- Console.WriteLine("Ускорение: " + a);
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement