fork download
  1. #include <chrono>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. void construct_test() {
  6. std::vector<uint8_t> raw_data;
  7. for (int i = 0; i < 1000 * 1024; i++) {
  8. raw_data.push_back(i % 256);
  9. }
  10.  
  11. auto start = std::chrono::high_resolution_clock::now();
  12. std::string target_data;
  13. target_data = std::string(raw_data.begin(), raw_data.end());
  14. auto finish = std::chrono::high_resolution_clock::now();
  15. std::cout << "construct: " << std::chrono::duration_cast<std::chrono::microseconds>(finish -
  16. start)
  17. .count()
  18. << "us" << std::endl;
  19. }
  20.  
  21. void copy_test() {
  22. std::vector<uint8_t> raw_data;
  23. for (int i = 0; i < 1000 * 1024; i++) {
  24. raw_data.push_back(i % 256);
  25. }
  26.  
  27. auto start = std::chrono::high_resolution_clock::now();
  28. std::string target_data;
  29. target_data.resize(raw_data.size());
  30. std::copy(raw_data.begin(), raw_data.end(), target_data.begin());
  31. auto finish = std::chrono::high_resolution_clock::now();
  32. std::cout << "copy: " << std::chrono::duration_cast<std::chrono::microseconds>(finish -
  33. start)
  34. .count()
  35. << "us" << std::endl;
  36. }
  37.  
  38. int main() {
  39. copy_test();
  40. construct_test();
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0.02s 5536KB
stdin
Standard input is empty
stdout
copy: 1044us
construct: 690us