fork(9) download
  1. #include <iostream>
  2. #include <string>
  3. #include <memory>
  4. #include <chrono>
  5. #include <vector>
  6. using namespace std;
  7.  
  8. #define ITER 100000
  9.  
  10. class Print{
  11.  
  12. public:
  13.  
  14. virtual void print(int p1, float p2, float p3, float p4){/*print */}
  15.  
  16. };
  17.  
  18. class PrintWrapper
  19. {
  20.  
  21. public:
  22.  
  23. PrintWrapper(shared_ptr<Print> print, int p1, float p2, float p3, float p4) :
  24. m_print(print), _p1(p1),_p2(p2),_p3(p3),_p4(p4){}
  25.  
  26. ~PrintWrapper(){}
  27.  
  28. void execute()
  29. {
  30. m_print->print(_p1,_p2,_p3,_p4);
  31. }
  32.  
  33. private:
  34.  
  35. shared_ptr<Print> m_print;
  36. int _p1;
  37. float _p2,_p3,_p4;
  38.  
  39. };
  40.  
  41. void test()
  42. {
  43. shared_ptr<Print> p(new Print());
  44. shared_ptr<PrintWrapper> pw(new PrintWrapper(p, 1, 2.f,3.0f,4.0f));
  45.  
  46. //-------------test 1-------------------------
  47. auto time1 = std::chrono::system_clock::now();
  48.  
  49. for (auto var = 0; var < ITER; ++var)
  50. {
  51. p->print(1, 2.f,3.0f,4.0f);
  52. }
  53.  
  54. auto time2 = std::chrono::system_clock::now();
  55.  
  56. cout <<"test 1 : "<< (time2 - time1).count() << " microseconds." << endl;
  57.  
  58. //-------------test 2-------------------------
  59. auto time3 = std::chrono::system_clock::now();
  60.  
  61. for (auto var = 0; var < ITER; ++var)
  62. {
  63. pw->execute();
  64. }
  65.  
  66. auto time4 = std::chrono::system_clock::now();
  67.  
  68. cout <<"test 2 : "<< (time4 - time3).count() << " microseconds." << endl;
  69.  
  70. }
  71. int main() { test(); }
Success #stdin #stdout 0s 2960KB
stdin
Standard input is empty
stdout
test : 2946 microseconds.