fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. const int size = 50000000;
  5.  
  6. std::vector<int> test1()
  7. {
  8. return std::vector<int>(size);
  9. }
  10.  
  11. void test2(std::vector<int>& v)
  12. {
  13. v.assign(size, 0);
  14. }
  15.  
  16. int main()
  17. {
  18. std::vector<int> v(size);
  19. clock_t c1, c2, c3, c4, c5, c6;
  20.  
  21. // コピー
  22. c1 = clock();
  23. v = static_cast<const std::vector<int>&>(test1());
  24. c2 = clock();
  25.  
  26. // ムーブ
  27. c3 = clock();
  28. v = test1();
  29. c4 = clock();
  30.  
  31. // バッファの再利用
  32. c5 = clock();
  33. test2(v);
  34. c6 = clock();
  35.  
  36. printf("コピー : %d\n", static_cast<int>(c2 - c1));
  37. printf("ムーブ : %d\n", static_cast<int>(c4 - c3));
  38. printf("再利用 : %d\n", static_cast<int>(c6 - c5));
  39. }
  40.  
Success #stdin #stdout 0.77s 2856KB
stdin
Standard input is empty
stdout
コピー : 300000
ムーブ : 200000
再利用 : 70000