#include <iostream>
#include <chrono>
class MeasureExecTime
{
static std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> p;
public:
static void start()
{
p = std::chrono::high_resolution_clock::now();
}
static void stop(const char *name)
{
auto p2 = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(p2 - p);
std::cerr << name << ": " << duration.count() << "us" << std::endl;
}
};
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> MeasureExecTime::p{};
int main() {
MeasureExecTime::start();
std::cout << "test" << std::endl;
MeasureExecTime::stop("std::cout");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgoKY2xhc3MgTWVhc3VyZUV4ZWNUaW1lCnsKICAgIHN0YXRpYyBzdGQ6OmNocm9ubzo6dGltZV9wb2ludDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrLCBzdGQ6OmNocm9ubzo6bmFub3NlY29uZHM+IHA7CnB1YmxpYzoKICAgIHN0YXRpYyB2b2lkIHN0YXJ0KCkKICAgIHsKICAgICAgICBwID0gc3RkOjpjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7IAogICAgfQogICAgCiAgICBzdGF0aWMgdm9pZCBzdG9wKGNvbnN0IGNoYXIgKm5hbWUpCiAgICB7CiAgICAgICAgYXV0byBwMiA9IHN0ZDo6Y2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgICAgIGF1dG8gZHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihwMiAtIHApOwogICAgICAgIHN0ZDo6Y2VyciA8PCBuYW1lIDw8ICI6ICIgPDwgZHVyYXRpb24uY291bnQoKSA8PCAidXMiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCnN0ZDo6Y2hyb25vOjp0aW1lX3BvaW50PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2ssIHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcz4gTWVhc3VyZUV4ZWNUaW1lOjpwe307CgoKaW50IG1haW4oKSB7CglNZWFzdXJlRXhlY1RpbWU6OnN0YXJ0KCk7CglzdGQ6OmNvdXQgPDwgInRlc3QiIDw8IHN0ZDo6ZW5kbDsKCU1lYXN1cmVFeGVjVGltZTo6c3RvcCgic3RkOjpjb3V0Iik7CgkKCXJldHVybiAwOwp9