#include <iostream>
#include <stdio.h>
#include <chrono>
#include <cstring>
using namespace std;
unsigned int strcpylen(char dest[], const char source[]) {
unsigned int i = 0;
while ((dest[i] = source[i]) != '\0') {
i++;
}
return i;
}
int main(int argc, char** argv) {
char str1[20];
scanf("%s", str1);
char str2[20];
auto start = chrono::steady_clock::now();
for (int i = 0; i < 10000; ++i) {
volatile int len = strcpylen(str2, str1);
}
auto end = chrono::steady_clock::now();
auto diff = end - start;
cout << "part1: " << chrono::duration <double, nano> (diff).count() << endl;
start = chrono::steady_clock::now();
for (int i = 0; i < 10000; ++i) {
volatile int len;
strcpy(str2, str1);
len = strlen(str2);
}
end = chrono::steady_clock::now();
diff = end - start;
cout << "part2: " << chrono::duration <double, nano> (diff).count() << endl;
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGNzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKdW5zaWduZWQgaW50IHN0cmNweWxlbihjaGFyIGRlc3RbXSwgY29uc3QgY2hhciBzb3VyY2VbXSkgewogICAgdW5zaWduZWQgaW50IGkgPSAwOwogICAgd2hpbGUgKChkZXN0W2ldID0gc291cmNlW2ldKSAhPSAnXDAnKSB7CiAgICAgICBpKys7CiAgICB9CiAgICByZXR1cm4gaTsgCn0KCgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKCWNoYXIgc3RyMVsyMF07CglzY2FuZigiJXMiLCBzdHIxKTsKCgljaGFyIHN0cjJbMjBdOwoJCgkKCWF1dG8gc3RhcnQgPSBjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CgoJZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CgoJCXZvbGF0aWxlIGludCBsZW4gPSBzdHJjcHlsZW4oc3RyMiwgc3RyMSk7Cgl9CgkKCWF1dG8gZW5kID0gY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogCiAgICBhdXRvIGRpZmYgPSBlbmQgLSBzdGFydDsKCQoJY291dCA8PCAicGFydDE6ICIgPDwgY2hyb25vOjpkdXJhdGlvbiA8ZG91YmxlLCBuYW5vPiAoZGlmZikuY291bnQoKSA8PCBlbmRsOwoJCglzdGFydCA9IGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKCglmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKCgkJdm9sYXRpbGUgaW50IGxlbjsgCgkJc3RyY3B5KHN0cjIsIHN0cjEpOwoJCWxlbiAgPSBzdHJsZW4oc3RyMik7Cgl9CgkKCWVuZCA9IGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKIAogICAgZGlmZiA9IGVuZCAtIHN0YXJ0OwoJCgljb3V0IDw8ICJwYXJ0MjogIiA8PCBjaHJvbm86OmR1cmF0aW9uIDxkb3VibGUsIG5hbm8+IChkaWZmKS5jb3VudCgpIDw8IGVuZGw7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==