• Source
    1. #include <iostream>
    2. #include <cstdlib>
    3. #include <ctime>
    4. #include <vector>
    5. #include <utility>
    6. #include <algorithm>
    7.  
    8. using namespace std;
    9.  
    10. pair<vector<int>, vector<int>> createArrays(){
    11. vector<int> first(rand() % 13000);
    12. vector<int> second(rand() % 13000);
    13.  
    14. generate(first.begin(), first.end(), rand);
    15. generate(second.begin(), second.end(), rand);
    16.  
    17. return make_pair(first, second);
    18. }
    19.  
    20. int main(){
    21. clock_t start;
    22. clock_t total1 = 0;
    23. clock_t total2 = 0;
    24. bool isMismatch = false;
    25.  
    26. srand(time(nullptr));
    27.  
    28. for (auto i = 0; i < 3; ++i){
    29. auto testValues1 = createArrays();
    30. auto testValues2 = testValues1;
    31. auto test = rand();
    32.  
    33. //test1
    34. start = clock();
    35. {
    36. const auto size = testValues1.first.size();
    37.  
    38. testValues1.first.resize(size * testValues1.second.size());
    39.  
    40. for (int i = testValues1.first.size() - 1; i >= 0; --i){
    41. testValues1.first[i] = testValues1.first[i % size] + testValues1.second[i / size];
    42. }
    43. }
    44. total1 = clock() - start;
    45.  
    46. //test2
    47. start = clock();
    48. {
    49. auto n = testValues2.first.size();
    50.  
    51. testValues2.first.resize(n * testValues2.second.size());
    52.  
    53. for (auto i = n, j = testValues2.first.size(); i != 0; --i)
    54. {
    55. for (auto it = testValues2.second.rbegin(); it != testValues2.second.rend(); ++it)
    56. {
    57. testValues2.first[--j] = testValues2.first[i - 1] + *it;
    58. }
    59. }
    60. }
    61. total2 = clock() - start;
    62.  
    63. for (auto i = 0; i < testValues1.first.size(); ++i){
    64. isMismatch = testValues1.first[i] != testValues2.first[i];
    65. }
    66.  
    67. if (isMismatch){
    68. cout << "OH BAD!";
    69. }
    70. }
    71. cout << "Test 1: " << total1 << endl << "Test 2: " << total2 << endl;
    72.  
    73. return 0;
    74. }