fork(1) download
  1. #include <map>
  2. #include <algorithm>
  3. #include <chrono>
  4. #include <iostream>
  5.  
  6. template <class Func>
  7. void timeit(const char* message, Func f) {
  8. auto start = std::chrono::system_clock::now();
  9. f();
  10. auto end = std::chrono::system_clock::now();
  11. std::chrono::duration<double> elapsed_seconds = end-start;
  12. std::cout << "Duration of " << message << " is " <<
  13. elapsed_seconds.count() << "\n";
  14. }
  15.  
  16. void insert_dumb() {
  17. std::map<int, int> map;
  18. timeit ("dumb! insertion",
  19. [&]() {
  20. for (int i = 0; i < 100000; ++i)
  21. map[i] = i;
  22. });
  23. }
  24.  
  25. void insert_smart() {
  26. std::map<int, int> map;
  27. timeit ("smart insertion",
  28. [&]() {
  29. for (int i = 0; i < 100000; ++i)
  30. map.insert(map.end(), {i, i});
  31. });
  32. }
  33.  
  34. int main () {
  35.  
  36. for (int i = 0; i < 5; ++i) {
  37. insert_dumb();
  38. insert_smart();
  39. }
  40. }
Success #stdin #stdout 0.08s 19856KB
stdin
Standard input is empty
stdout
Duration of dumb! insertion is 0.0134276
Duration of smart insertion is 0.00255799
Duration of dumb! insertion is 0.0116018
Duration of smart insertion is 0.00252671
Duration of dumb! insertion is 0.0116012
Duration of smart insertion is 0.00253357
Duration of dumb! insertion is 0.0116372
Duration of smart insertion is 0.00254475
Duration of dumb! insertion is 0.011714
Duration of smart insertion is 0.00263281