fork download
  1. #include <vector>
  2. #include <array>
  3. #include <string>
  4. #include <iostream>
  5. #include <iomanip>
  6. #include <chrono>
  7.  
  8. class muTimer
  9. {
  10. using Clock = std::chrono::high_resolution_clock;
  11. bool active = false;
  12. Clock::duration duration_;
  13. Clock::time_point start_ = Clock::now(), stop_ = Clock::now();
  14.  
  15. muTimer(const muTimer&) = delete;
  16. muTimer& operator=(const muTimer&) = delete;
  17. public:
  18. using ns = std::chrono::nanoseconds;
  19. using mks = std::chrono::microseconds;
  20. using ms = std::chrono::milliseconds;
  21. muTimer() { reset(); start(); }
  22. ~muTimer() = default;
  23. muTimer& reset()
  24. {
  25. duration_ = std::chrono::nanoseconds(0);
  26. active = false;
  27. return *this;
  28. }
  29. muTimer& start()
  30. {
  31. if (!active)
  32. {
  33. start_ = Clock::now();
  34. active = true;
  35. }
  36. return *this;
  37. }
  38. muTimer& stop()
  39. {
  40. if (active)
  41. {
  42. stop_ = Clock::now();
  43. duration_ += stop_ - start_;
  44. active = false;
  45. }
  46. return *this;
  47. }
  48. template<typename T = mks>
  49. unsigned long long duration()
  50. {
  51. return static_cast<unsigned long long>
  52. (std::chrono::duration_cast<T>(stop_-start_).count());
  53. }
  54. };
  55.  
  56.  
  57. using namespace std;
  58.  
  59.  
  60. int main()
  61. {
  62. {
  63. muTimer mt;
  64. vector<vector<long>> buffer(1000000, vector<long>() );
  65. for( int i = 0; i < 1000000; ++i ) buffer[ i ].reserve( 12 );
  66. mt.stop();
  67. int s = 0;
  68. for(int i = 0; i < 1000000; ++i) s += buffer[i].capacity();
  69. }
  70. {
  71. muTimer mt;
  72. vector<vector<long>> buffer(1000000, vector<long>() );
  73. for( int i = 0; i < 1000000; ++i ) buffer[ i ].reserve( 12 );
  74. mt.stop();
  75. cout << mt.duration<muTimer::ms>() << " ms\n";
  76. int s = 0;
  77. for(int i = 0; i < 1000000; ++i) s += buffer[i].capacity();
  78. cout << "Total capacity: " << s << endl;
  79. }
  80. {
  81. muTimer mt;
  82. vector<vector<long>> buffer(1000000, vector<long>(12) );
  83. mt.stop();
  84. cout << mt.duration<muTimer::ms>() << " ms\n";
  85. int s = 0;
  86. for(int i = 0; i < 1000000; ++i) s += buffer[i].capacity();
  87. cout << "Total capacity: " << s << endl;
  88. }
  89. {
  90. muTimer mt;
  91. vector<vector<long>> buffer(1000000, vector<long>(12) );
  92. for( int i = 0; i < 1000000; ++i ) buffer[ i ].clear();
  93. mt.stop();
  94. cout << mt.duration<muTimer::ms>() << " ms\n";
  95. int s = 0;
  96. for(int i = 0; i < 1000000; ++i) s += buffer[i].capacity();
  97. cout << "Total capacity: " << s << endl;
  98. }
  99. {
  100. muTimer mt;
  101. array<array<long,12>,1000000> buffer;
  102. mt.stop();
  103. cout << mt.duration<muTimer::ms>() << " ms\n";
  104. }
  105. }
  106.  
Success #stdin #stdout 0.27s 136424KB
stdin
Standard input is empty
stdout
45 ms
Total capacity: 12000000
26 ms
Total capacity: 12000000
29 ms
Total capacity: 12000000
0 ms