fork(2) download
  1. #include <iostream>
  2. #include <chrono>
  3. #include <algorithm>
  4. #include <cstdlib>
  5. using namespace std;
  6.  
  7. std::vector<int> generate()
  8. {
  9. std::vector<int> vec(1500000);
  10.  
  11. std::generate (vec.begin(), vec.end(), rand);
  12. std::transform(vec.begin(), vec.end(), vec.begin(),
  13. std::bind2nd(std::modulus<int>(), 1000));
  14. return std::move(vec);
  15. }
  16.  
  17. int cmp(const void *a, const void *b)
  18. {
  19. return (*(int*)a) - (*(int*)b);
  20. }
  21.  
  22. template<class F>
  23. void measurement_time(F f)
  24. {
  25. auto vec = generate();
  26. auto start = std::chrono::high_resolution_clock::now();
  27. f(vec);
  28. auto stop = std::chrono::high_resolution_clock::now();
  29. std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count() << "ms" << std::endl;
  30. }
  31.  
  32. int main(int argc, char *argv[])
  33. {
  34. for(int i = 0; i < 10; ++i)
  35. {
  36. measurement_time([](std::vector<int>& vec)
  37. {
  38. std::sort(vec.begin(), vec.end());
  39. });
  40.  
  41. measurement_time([](std::vector<int>& vec)
  42. {
  43. qsort(&vec[0], vec.size(), sizeof(int), cmp);
  44. });
  45.  
  46. std::cout << std::endl;
  47. }
  48. }
Time limit exceeded #stdin #stdout 5s 15152KB
stdin
Standard input is empty
stdout
95ms
341ms

97ms
333ms

95ms
339ms

95ms
338ms

94ms
332ms

96ms
342ms

95ms
336ms

94ms
336ms

95ms
334ms

95ms