Advertisement
Guest User

std_array.cpp

a guest
Apr 22nd, 2015
602
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. ////C++ Headers
  2. #include <array>
  3. using namespace std;
  4.  
  5.  
  6. #pragma region Benchmarking
  7. ////BenchMarking Header
  8. #include "Benchmark.h"
  9. static CPUBenchmark g_cb;
  10. static MemoryBenchmark g_mb;
  11.  
  12. //#define PRINT_CPU(_STR_,_RESULT_,_VECT_SIZE_) printf_s( ""#_STR_"==>Tick: %llld, ==>Avrg Tick:  %llld\n", _RESULT_, _RESULT_ / _VECT_SIZE_);
  13. #define _VECT_SIZE_ ARR_SIZE
  14. #define PRINT_CPU(_FN_) {printf_s(""#_FN_"\n");\
  15.                                 g_cb.restart();\
  16.                                 _FN_();\
  17.                                 long long result=g_cb.stop();\
  18.                                 printf_s("==>Tick: %llld\n==>Avrg: %.5lf\n", \
  19.                                 result, double(result) / _VECT_SIZE_);}
  20. #define MEM_INFO_PRINT(...) {g_mb.recalculateMem(); printf_s("==>VMem: %.2lfMb\n==>PMem: %.2lfMb\n",\
  21.                                                 double(g_mb.getVMUsedByMe()) / 1024.0, double(g_mb.getPhysUsedByMe()) / 1024.0);}
  22. #pragma endregion
  23.  
  24. const long long ARR_SIZE = 100 * 1000;
  25.  
  26. void test_arr_without_init()
  27. {
  28.     array<int, ARR_SIZE> arr;
  29.     bool result = true;
  30.     long i;
  31.     for (i = 0; i < ARR_SIZE; i++)
  32.     {
  33.         arr[i] = i;
  34.     }
  35.  
  36.     for (i = 0; i < ARR_SIZE && result; i++)
  37.     {
  38.         result &= arr[i] == i;
  39.     }
  40.  
  41.     MEM_INFO_PRINT();
  42. }
  43.  
  44. //i.e. no [] access,
  45. //According to Wiki [] is slower
  46. void test_arr_with_array_at()
  47. {
  48.     array<int, ARR_SIZE> arr;
  49.     bool result = true;
  50.     long i;
  51.     for (i = 0; i < ARR_SIZE; i++)
  52.     {
  53.         arr.at(i) = i;
  54.     }
  55.  
  56.     for (i = 0; i < ARR_SIZE && result; i++)
  57.     {
  58.         result &= arr.at(i) == i;
  59.     }
  60.  
  61.     MEM_INFO_PRINT();
  62. }
  63.  
  64. void test_arr_with_init_array_at()
  65. {
  66.     array<int, ARR_SIZE> arr = {0};
  67.     bool result = true;
  68.     long i;
  69.     for (i = 0; i < ARR_SIZE; i++)
  70.     {
  71.         arr.at(i) = i;
  72.     }
  73.  
  74.     for (i = 0; i < ARR_SIZE && result; i++)
  75.     {
  76.         result &= arr.at(i) == i;
  77.     }
  78.  
  79.     MEM_INFO_PRINT();
  80. }
  81.  
  82.  
  83.  
  84. void test_c_arr_without_init()
  85. {
  86.     int arr[ARR_SIZE];
  87.     bool result = true;
  88.     long i;
  89.     for (i = 0; i < ARR_SIZE; i++)
  90.     {
  91.         arr[i] = i;
  92.     }
  93.  
  94.     for (i = 0; i < ARR_SIZE; i++)
  95.     {
  96.         result &= arr[i] == i;
  97.     }
  98.  
  99.     MEM_INFO_PRINT();
  100. }
  101.  
  102. void test_c_arr_with_init()
  103. {
  104.     int arr[ARR_SIZE] = {0};
  105.     bool result = true;
  106.     long i;
  107.     for (i = 0; i < ARR_SIZE; i++)
  108.     {
  109.         arr[i] = i;
  110.     }
  111.  
  112.     for (i = 0; i < ARR_SIZE; i++)
  113.     {
  114.         result &= arr[i] == i;
  115.     }
  116.  
  117.     MEM_INFO_PRINT();
  118. }
  119.  
  120. void TEST_std_array()
  121. {
  122.  
  123.     long outVal = -1;
  124.     PRINT_CPU(test_arr_without_init);
  125.  
  126.     PRINT_CPU(test_arr_with_init_array_at);
  127.  
  128.     PRINT_CPU(test_arr_with_array_at);
  129.  
  130.     PRINT_CPU(test_c_arr_without_init);
  131.  
  132.     PRINT_CPU(test_c_arr_with_init);
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement