#pragma once #include #include #include #include struct PerfPrinter { timeval start; boost::optional msg; PerfPrinter(boost::optional msg) : msg(msg) { if (msg) std::cerr << "\r\033[K" << *msg << std::flush; gettimeofday(&start,NULL); } ~PerfPrinter() { if (msg) std::cerr << "\r\033[K" << *msg << ":\t" << diff() << " s" << std::endl; } double diff() { timeval stop; gettimeofday(&stop,NULL); return (stop.tv_sec + stop.tv_usec/1000000.0) - (start.tv_sec + start.tv_usec/1000000.0); } };