fork(1) download
  1. #include <iostream>
  2. #include <chrono>
  3. #include <vector>
  4. using namespace std;
  5. class B2{
  6. public: int randomNumber=((double) rand() / (RAND_MAX))*10;
  7. virtual ~B2() = default;
  8. virtual int f(int n){return -n+randomNumber;}
  9. int g(int n){return -n+randomNumber;}
  10. };
  11. class C : public B2{
  12. public: int f(int n) override {return n-randomNumber;}
  13. };
  14. int main() {
  15. std::vector<B2*> bs;
  16. const int numTest=1000000;
  17. for(int n=0;n<numTest;n++){
  18. if(((double) rand() / (RAND_MAX))>0.5){
  19. bs.push_back(new B2());
  20. }else{
  21. bs.push_back(new C());
  22. }
  23. };
  24. auto t1 = std::chrono::system_clock::now();
  25. int s=0;
  26. for(int n=0;n<numTest;n++){
  27. s+=bs[n]->f(n);
  28. };
  29. auto t2= std::chrono::system_clock::now();
  30. for(int n=0;n<numTest;n++){
  31. s+=bs[n]->g(n);
  32. };
  33. auto t3= std::chrono::system_clock::now();
  34. auto t21=t2-t1;
  35. auto t32=t3-t2;
  36. std::cout<<t21.count()<<" "<<t32.count()<<" ratio="<< (((float)t21.count())/t32.count()) << std::endl;
  37. std::cout<<s<<std::endl;
  38. for(int n=0;n<numTest;n++){
  39. delete bs[n];
  40. };
  41. }
Success #stdin #stdout 0.07s 46784KB
stdin
Standard input is empty
stdout
6998524 2507002 ratio=2.79159
-1688609478