Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1.  
  2. void randomize(std::vector<int> &v) {
  3. static std::random_device rd{};
  4. static std::mt19937 gen{rd()};
  5. static std::uniform_real_distribution<> dis{};
  6.  
  7. for (int &i : v) {
  8. i = dis(gen);
  9. }
  10. }
  11.  
  12. static void VectorCreateBench(State &state) {
  13. for (auto _ : state) {
  14. std::vector<int> v;
  15. DoNotOptimize(v);
  16. (void)v;
  17. }
  18. }
  19.  
  20. BENCHMARK(VectorCreateBench);
  21.  
  22. static void VectorOfRandomNumberBench(State &state) {
  23. for (auto _ : state) {
  24. std::vector<int> v;
  25. v.resize(state.range(0));
  26.  
  27. DoNotOptimize(v);
  28. state.PauseTiming();
  29. randomize(v);
  30. state.ResumeTiming();
  31. }
  32. }
  33.  
  34. BENCHMARK(VectorOfRandomNumberBench)->Range(1<<4,1<<10);
  35.  
  36. static void VectorAtBench(State &state) {
  37. std::vector<int> v;
  38. DoNotOptimize(v);
  39.  
  40. int index = 0;
  41.  
  42. for (auto _ : state) {
  43. state.PauseTiming();
  44. index++;
  45. v.resize(state.range(0));
  46. randomize(v);
  47. if(index >= state.range(0)) {
  48. index = 0;
  49. }
  50. state.ResumeTiming();
  51. v.at(index);
  52. }
  53. }
  54.  
  55. BENCHMARK(VectorAtBench)->Range(1<<4,1<<10);
  56.  
  57. static void VectorSquareBracketsBench(State &state) {
  58. std::vector<int> v;
  59. DoNotOptimize(v);
  60.  
  61. int index = 0;
  62.  
  63. for (auto _ : state) {
  64. state.PauseTiming();
  65. index++;
  66. v.resize(state.range(0));
  67. randomize(v);
  68. if(index >= state.range(0)) {
  69. index = 0;
  70. }
  71. state.ResumeTiming();
  72. v[index];
  73. }
  74. }
  75.  
  76. BENCHMARK(VectorSquareBracketsBench)->Range(1<<4,1<<10);
  77.  
  78. static void VectorFrontBench(State &state) {
  79. std::vector<int> v;
  80. DoNotOptimize(v);
  81.  
  82. for (auto _ : state) {
  83. state.PauseTiming();
  84. v.resize(state.range(0));
  85. randomize(v);
  86. state.ResumeTiming();
  87. v.begin();
  88. }
  89. }
  90.  
  91. BENCHMARK(VectorFrontBench)->Range(1<<4,1<<10);
  92.  
  93. static void VectorBackBench(State &state) {
  94. std::vector<int> v;
  95. DoNotOptimize(v);
  96.  
  97. for (auto _ : state) {
  98. state.PauseTiming();
  99. v.resize(state.range(0));
  100. randomize(v);
  101. state.ResumeTiming();
  102. v.back();
  103. }
  104. }
  105.  
  106. BENCHMARK(VectorBackBench)->Range(1<<4,1<<10);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement