• Source
    1. #include <stdio.h>
    2. #include <algorithm>
    3. #include <list>
    4. #include <time.h> /* clock_t, clock, CLOCKS_PER_SEC */
    5. using std::list;
    6.  
    7. const int uiArraySize = 45;
    8.  
    9. inline int f(int i, int j, int c, int k)
    10. {
    11. return abs(i - c) + abs(j - k);
    12. }
    13.  
    14. int g_testArray[uiArraySize][uiArraySize][uiArraySize][uiArraySize] = { };
    15.  
    16. void fill_array()
    17. {
    18. for(int i = 0; i < uiArraySize; ++i)
    19. {
    20. for(int j = 0; j < uiArraySize; ++j)
    21. {
    22. for(int c = 0; c < uiArraySize; ++c)
    23. {
    24. for(int k = 0; k < uiArraySize; ++k)
    25. {
    26. g_testArray[i][j][c][k] = f(i, j, c, k);
    27. }
    28. }
    29. }
    30. }
    31. }
    32.  
    33. void TestArray(list<int> &results)
    34. {
    35. for(int i = 0; i < uiArraySize; ++i)
    36. {
    37. for(int j = 0; j < uiArraySize; ++j)
    38. {
    39. for(int c = 0; c < uiArraySize; ++c)
    40. {
    41. for(int k = 0; k < uiArraySize; ++k)
    42. {
    43. if(results.size() < 1000)
    44. {
    45. results.push_back(g_testArray[i][j][c][k]);
    46. }
    47. }
    48. }
    49. }
    50. }
    51. }
    52.  
    53. void TestInlineFunction(list<int> &results)
    54. {
    55. for(int i = 0; i < uiArraySize; ++i)
    56. {
    57. for(int j = 0; j < uiArraySize; ++j)
    58. {
    59. for(int c = 0; c < uiArraySize; ++c)
    60. {
    61. for(int k = 0; k < uiArraySize; ++k)
    62. {
    63. if(results.size() < 1000)
    64. {
    65. results.push_back(f(i, j, c, k));
    66. }
    67. }
    68. }
    69. }
    70. }
    71. }
    72.  
    73. int main()
    74. {
    75. fill_array();
    76.  
    77. {
    78. list<int> results;
    79. clock_t start = clock();
    80. TestArray(results);
    81. clock_t end = clock();
    82.  
    83. double consumed_time = (double)(end - start) / (double)CLOCKS_PER_SEC;
    84.  
    85. printf("Time for array is: %lf sec. \n", consumed_time);
    86. }
    87.  
    88. {
    89. list<int> results;
    90. clock_t start = clock();
    91. TestInlineFunction(results);
    92. clock_t end = clock();
    93.  
    94. double consumed_time = (double)(end - start) / (double)CLOCKS_PER_SEC;
    95.  
    96. printf("Time for inline function is: %lf sec. \n", consumed_time);
    97. }
    98.  
    99. return 0;
    100. }
    101.