#include <chrono>
#include <iostream>
#include <vector>
void construct_test() {
std::vector<uint8_t> raw_data;
for (int i = 0; i < 1000 * 1024; i++) {
raw_data.push_back(i % 256);
}
auto start = std::chrono::high_resolution_clock::now();
std::string target_data;
target_data = std::string(raw_data.begin(), raw_data.end());
auto finish = std::chrono::high_resolution_clock::now();
std::cout << "construct: " << std::chrono::duration_cast<std::chrono::microseconds>(finish -
start)
.count()
<< "us" << std::endl;
}
void copy_test() {
std::vector<uint8_t> raw_data;
for (int i = 0; i < 1000 * 1024; i++) {
raw_data.push_back(i % 256);
}
auto start = std::chrono::high_resolution_clock::now();
std::string target_data;
target_data.resize(raw_data.size());
std::copy(raw_data.begin(), raw_data.end(), target_data.begin());
auto finish = std::chrono::high_resolution_clock::now();
std::cout << "copy: " << std::chrono::duration_cast<std::chrono::microseconds>(finish -
start)
.count()
<< "us" << std::endl;
}
int main() {
copy_test();
construct_test();
return 0;
}
I2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdm9pZCBjb25zdHJ1Y3RfdGVzdCgpIHsKICBzdGQ6OnZlY3Rvcjx1aW50OF90PiByYXdfZGF0YTsKICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAgKiAxMDI0OyBpKyspIHsKICAgIHJhd19kYXRhLnB1c2hfYmFjayhpICUgMjU2KTsKICB9CgogIGF1dG8gc3RhcnQgPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICBzdGQ6OnN0cmluZyB0YXJnZXRfZGF0YTsKICB0YXJnZXRfZGF0YSA9IHN0ZDo6c3RyaW5nKHJhd19kYXRhLmJlZ2luKCksIHJhd19kYXRhLmVuZCgpKTsKICBhdXRvIGZpbmlzaCA9IHN0ZDo6Y2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogIHN0ZDo6Y291dCA8PCAiY29uc3RydWN0OiAiIDw8IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KGZpbmlzaCAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0KQogICAgICAgICAgICAgICAgICAgLmNvdW50KCkKICAgICAgICAgICAgPDwgInVzIiA8PCBzdGQ6OmVuZGw7Cn0KCnZvaWQgY29weV90ZXN0KCkgewogIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHJhd19kYXRhOwogIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMCAqIDEwMjQ7IGkrKykgewogICAgcmF3X2RhdGEucHVzaF9iYWNrKGkgJSAyNTYpOwogIH0KCiAgYXV0byBzdGFydCA9IHN0ZDo6Y2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogIHN0ZDo6c3RyaW5nIHRhcmdldF9kYXRhOwogIHRhcmdldF9kYXRhLnJlc2l6ZShyYXdfZGF0YS5zaXplKCkpOwogIHN0ZDo6Y29weShyYXdfZGF0YS5iZWdpbigpLCByYXdfZGF0YS5lbmQoKSwgdGFyZ2V0X2RhdGEuYmVnaW4oKSk7CiAgYXV0byBmaW5pc2ggPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICBzdGQ6OmNvdXQgPDwgImNvcHk6ICIgPDwgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oZmluaXNoIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQpCiAgICAgICAgICAgICAgICAgICAuY291bnQoKQogICAgICAgICAgICA8PCAidXMiIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgY29weV90ZXN0KCk7CiAgY29uc3RydWN0X3Rlc3QoKTsKCiAgcmV0dXJuIDA7Cn0=