fork(1) download
  1. #include <map>
  2. #include <algorithm>
  3. #include <chrono>
  4. #include <iostream>
  5. #include <unordered_map>
  6.  
  7. template <class Func>
  8. void timeit(const char* message, Func f) {
  9. auto start = std::chrono::system_clock::now();
  10. f();
  11. auto end = std::chrono::system_clock::now();
  12. std::chrono::duration<double> elapsed_seconds = end-start;
  13. std::cout << "Duration of " << message << " is " <<
  14. elapsed_seconds.count() << "\n";
  15. }
  16.  
  17. void insert_dumb() {
  18. std::map<int, int> map;
  19. timeit ("dumb! insertion",
  20. [&]() {
  21. for (int i = 0; i < 100000; ++i)
  22. map[i] = i;
  23. });
  24. }
  25.  
  26. void insert_smart() {
  27. std::map<int, int> map;
  28. timeit ("smart insertion",
  29. [&]() {
  30. for (int i = 0; i < 100000; ++i)
  31. map.insert(map.end(), {i, i});
  32. });
  33. }
  34.  
  35. void insert_unord() {
  36. std::unordered_map<int, int> map;
  37. timeit ("unord insertion",
  38. [&]() {
  39. for (int i = 0; i < 100000; ++i)
  40. map.insert({i, i});
  41. });
  42. }
  43.  
  44. int main () {
  45.  
  46. for (int i = 0; i < 5; ++i) {
  47. insert_dumb();
  48. insert_smart();
  49. insert_unord();
  50. }
  51. }
Success #stdin #stdout 0.12s 19856KB
stdin
Standard input is empty
stdout
Duration of dumb! insertion is 0.0128524
Duration of smart insertion is 0.00258127
Duration of unord insertion is 0.0054031
Duration of dumb! insertion is 0.0120572
Duration of smart insertion is 0.00257588
Duration of unord insertion is 0.00534482
Duration of dumb! insertion is 0.0121349
Duration of smart insertion is 0.00257397
Duration of unord insertion is 0.0055656
Duration of dumb! insertion is 0.01239
Duration of smart insertion is 0.00259131
Duration of unord insertion is 0.00564634
Duration of dumb! insertion is 0.012397
Duration of smart insertion is 0.00270038
Duration of unord insertion is 0.00557701