fork download
  1.  
  2. #include <QtCore/QCoreApplication>
  3. #include <QtCore/QElapsedTimer>
  4. #include <QtGui/QVector3D>
  5. #include <iostream>
  6. #include <sstream>
  7. #define OP_LOOPS 1000000
  8. #define RETRY_LOOPS 10
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12. #ifdef _DEBUG
  13. std::cout << "DEBUG" << std::endl << std::endl;
  14. #else
  15. std::cout << "RELEASE" << std::endl << std::endl;
  16. #endif
  17.  
  18. using Ints = std::list<int>;
  19. std::list<int> ints;
  20. for (unsigned int i = 0; i < OP_LOOPS; ++i) {
  21. ints.push_back(i);
  22. }
  23.  
  24. std::cout << "Number of list elements: " << OP_LOOPS << std::endl << std::endl;
  25.  
  26. struct Times {
  27. qint64 t0, t1, t2, t3, tx;
  28. };
  29.  
  30. std::vector<Times> elapsedTimes;
  31. elapsedTimes.resize(RETRY_LOOPS);
  32.  
  33. for (unsigned int r = 0; r < RETRY_LOOPS; ++r) {
  34.  
  35. {
  36. QElapsedTimer timer;
  37. timer.start();
  38.  
  39. for (Ints::iterator itr = ints.begin(); itr != ints.end(); itr++) {
  40. (*itr) -= 1;
  41. }
  42.  
  43. qint64 elapsed = timer.elapsed();
  44. elapsedTimes[r].t0 = elapsed;
  45. }
  46.  
  47. {
  48. QElapsedTimer timer;
  49. timer.start();
  50.  
  51. for (Ints::iterator itr = ints.begin(); itr != ints.end(); ++itr) {
  52. (*itr) -= 1;
  53. }
  54.  
  55. qint64 elapsed = timer.elapsed();
  56. elapsedTimes[r].t1 = elapsed;
  57. }
  58.  
  59. {
  60. QElapsedTimer timer;
  61. timer.start();
  62.  
  63. for (Ints::iterator itr = ints.begin(), end = ints.end(); itr != end; ++itr) {
  64. (*itr) -= 1;
  65. }
  66.  
  67. qint64 elapsed = timer.elapsed();
  68. elapsedTimes[r].t2 = elapsed;
  69. }
  70.  
  71. {
  72. QElapsedTimer timer;
  73. timer.start();
  74.  
  75. for (int& i : ints) {
  76. i -= 1;
  77. }
  78.  
  79. qint64 elapsed = timer.elapsed();
  80. elapsedTimes[r].t3 = elapsed;
  81. }
  82.  
  83. {
  84. QElapsedTimer timer;
  85. timer.start();
  86.  
  87. Ints::iterator itr = ints.begin();
  88. while (itr != ints.end()) {
  89. (*itr) -= 1;
  90. ++itr;
  91. }
  92.  
  93. qint64 elapsed = timer.elapsed();
  94. elapsedTimes[r].tx = elapsed;
  95. }
  96.  
  97. std::cout << ".";
  98. }
  99.  
  100. std::cout << std::endl << std::endl << "times [ms]";
  101. std::cout << std::endl << "for_loop_post_inc__:";
  102. float d = 0.0;
  103. for (unsigned int r = 0; r < RETRY_LOOPS; ++r) {
  104. d += (float)elapsedTimes[r].t0;
  105. std::cout << " " << elapsedTimes[r].t0;
  106. }
  107. std::cout << " -> " << (d / (float)RETRY_LOOPS);
  108.  
  109. d = 0.0;
  110. std::cout << std::endl << "for_loop_pre_inc_____:";
  111. for (unsigned int r = 0; r < RETRY_LOOPS; ++r) {
  112. d += (float)elapsedTimes[r].t1;
  113. std::cout << " " << elapsedTimes[r].t1;
  114. }
  115. std::cout << " -> " << (d / (float)RETRY_LOOPS);
  116.  
  117. d = 0.0;
  118. std::cout << std::endl << "for_loop_pre_inc_cond:";
  119. for (unsigned int r = 0; r < RETRY_LOOPS; ++r) {
  120. d += (float)elapsedTimes[r].t2;
  121. std::cout << " " << elapsedTimes[r].t2;
  122. }
  123. std::cout << " -> " << (d / (float)RETRY_LOOPS);
  124.  
  125. d = 0.0;
  126. std::cout << std::endl << "for_each_____________:";
  127. for (unsigned int r = 0; r < RETRY_LOOPS; ++r) {
  128. d += (float)elapsedTimes[r].t3;
  129. std::cout << " " << elapsedTimes[r].t3;
  130. }
  131. std::cout << " -> " << (d / (float)RETRY_LOOPS);
  132.  
  133. d = 0.0;
  134. std::cout << std::endl << "while_loop___________:";
  135. for (unsigned int r = 0; r < RETRY_LOOPS; ++r) {
  136. d += (float)elapsedTimes[r].tx;
  137. std::cout << " " << elapsedTimes[r].tx;
  138. }
  139. std::cout << " -> " << (d / (float)RETRY_LOOPS);
  140.  
  141.  
  142. std::cout << std::endl << std::endl;
  143.  
  144. return 0;
  145. }
  146.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:2:35: fatal error: QtCore/QCoreApplication: No such file or directory
compilation terminated.
stdout
Standard output is empty