Advertisement
Tvor0zhok

ParProg2 (1.1)

Sep 13th, 2023 (edited)
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. // https://drive.google.com/drive/folders/1GK3t7PBsRFQp01ApEmk1wb6Scrw_CFA4?usp=sharing
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. #include <ctime>
  6. #include <cmath>
  7. #include <ppl.h>
  8. using namespace std;
  9.  
  10. #define N 200
  11. #define EPS 1e-9
  12.  
  13. double fun(double x)
  14. {
  15. double ans = 0;
  16.  
  17. for (int k = 1; k <= max(20, int(20 * fabs(x))); ++k)
  18. for (int j = 1; j <= max(20, int(20 * fabs(x))); ++j)
  19. {
  20. double x_2 = x * x;
  21.  
  22. ans += x_2 * (k + j) / (x_2 + k * k * k + j * j * j) * cos(k * x) * sin(j * x);
  23. }
  24.  
  25. return ans;
  26. }
  27.  
  28. double res1[N + 7], res2[N + 7];
  29.  
  30. int main()
  31. {
  32. setlocale(LC_ALL, "Russian");
  33.  
  34. auto t_start = clock();
  35.  
  36. for (int i = 1; i <= N; ++i)
  37. res1[i] = fun(100 * cos(i));
  38.  
  39. auto t_end = clock();
  40.  
  41. double time1 = 1.0 * (t_end - t_start) / CLOCKS_PER_SEC;
  42.  
  43. cout << "Последовательная реализация: " << time1 << "\n";
  44.  
  45. t_start = clock();
  46.  
  47. concurrency::parallel_for(1, N + 1, [](size_t i) {res2[i] = fun(100 * cos(i)); });
  48.  
  49. t_end = clock();
  50.  
  51. double time2 = 1.0 * (t_end - t_start) / CLOCKS_PER_SEC;
  52.  
  53. cout << "Параллельная реализация: " << time2 << "\n";
  54.  
  55. cout << "Разница во времени: " << time1 / time2 << "\n";
  56.  
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement