fork(2) download
  1. #include <iostream>
  2. #include <chrono>
  3. using namespace std;
  4.  
  5. typedef std::chrono::high_resolution_clock Clock;
  6.  
  7. class Dimension
  8. {
  9. public:
  10. Dimension(int _X, int _Y)
  11. {
  12. mX = _X;
  13. mY = _Y;
  14. }
  15.  
  16. private:
  17. int mX;
  18. int mY;
  19. };
  20.  
  21. class Image
  22. {
  23. public:
  24. virtual void Draw() = 0;
  25. virtual Dimension GetDimensionInPixels() = 0;
  26.  
  27. protected:
  28. int dimensionX;
  29. int dimensionY;
  30. };
  31.  
  32. class PngImage : public Image
  33. {
  34. public:
  35. void Draw()
  36. {
  37. }
  38.  
  39. Dimension GetDimensionInPixels()
  40. {
  41. return Dimension(dimensionX, dimensionY);
  42. }
  43. };
  44.  
  45. class BitmapImage : public Image
  46. {
  47. public:
  48. void Draw()
  49. {
  50. }
  51.  
  52. Dimension GetDimensionInPixels()
  53. {
  54. return Dimension(dimensionX, dimensionY);
  55. }
  56. };
  57.  
  58. class TiffImage : public Image
  59. {
  60. public:
  61. void Draw()
  62. {
  63. }
  64.  
  65. Dimension GetDimensionInPixels()
  66. {
  67. return Dimension(dimensionX, dimensionY);
  68. }
  69. };
  70.  
  71. int main() {
  72.  
  73. Image* pImage = new TiffImage;
  74.  
  75. auto then = Clock::now();
  76.  
  77. // Call Draw 1000 times to make sure perf is visible
  78. for (int i = 0; i < 1000; ++i)
  79. pImage->Draw();
  80.  
  81. auto now = Clock::now();
  82.  
  83. cout << "Time taken: "
  84. << std::chrono::duration_cast<std::chrono::nanoseconds>(now - then).count()
  85. << " nanoseconds" << endl;
  86.  
  87. return 0;
  88. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
Time taken: 2613 nanoseconds