2017-01-27 12:49:09 -08:00
|
|
|
#include "pch.h"
|
2017-04-27 18:08:52 -07:00
|
|
|
|
2016-10-10 18:12:26 -07:00
|
|
|
#include "vcpkg_Checks.h"
|
2017-04-27 18:08:52 -07:00
|
|
|
#include "vcpkg_Chrono.h"
|
2016-10-10 18:12:26 -07:00
|
|
|
|
|
|
|
namespace vcpkg
|
|
|
|
{
|
2017-02-16 16:29:52 -08:00
|
|
|
static std::string format_time_userfriendly(const std::chrono::nanoseconds& nanos)
|
2016-10-10 18:12:26 -07:00
|
|
|
{
|
|
|
|
using std::chrono::hours;
|
|
|
|
using std::chrono::minutes;
|
|
|
|
using std::chrono::seconds;
|
|
|
|
using std::chrono::milliseconds;
|
|
|
|
using std::chrono::microseconds;
|
|
|
|
using std::chrono::nanoseconds;
|
|
|
|
using std::chrono::duration_cast;
|
|
|
|
|
2017-02-16 16:29:52 -08:00
|
|
|
const double nanos_as_double = static_cast<double>(nanos.count());
|
2016-10-10 18:12:26 -07:00
|
|
|
|
|
|
|
if (duration_cast<hours>(nanos) > hours())
|
|
|
|
{
|
|
|
|
auto t = nanos_as_double / duration_cast<nanoseconds>(hours(1)).count();
|
|
|
|
return Strings::format("%.4g h", t);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration_cast<minutes>(nanos) > minutes())
|
|
|
|
{
|
|
|
|
auto t = nanos_as_double / duration_cast<nanoseconds>(minutes(1)).count();
|
|
|
|
return Strings::format("%.4g min", t);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration_cast<seconds>(nanos) > seconds())
|
|
|
|
{
|
|
|
|
auto t = nanos_as_double / duration_cast<nanoseconds>(seconds(1)).count();
|
|
|
|
return Strings::format("%.4g s", t);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration_cast<milliseconds>(nanos) > milliseconds())
|
|
|
|
{
|
|
|
|
auto t = nanos_as_double / duration_cast<nanoseconds>(milliseconds(1)).count();
|
|
|
|
return Strings::format("%.4g ms", t);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration_cast<microseconds>(nanos) > microseconds())
|
|
|
|
{
|
|
|
|
auto t = nanos_as_double / duration_cast<nanoseconds>(microseconds(1)).count();
|
2016-10-14 16:25:15 -07:00
|
|
|
return Strings::format("%.4g us", t);
|
2016-10-10 18:12:26 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
return Strings::format("%.4g ns", nanos_as_double);
|
|
|
|
}
|
|
|
|
|
2017-04-03 15:44:46 -07:00
|
|
|
ElapsedTime ElapsedTime::create_started()
|
2016-10-10 18:12:26 -07:00
|
|
|
{
|
2017-02-16 16:29:52 -08:00
|
|
|
ElapsedTime t;
|
2017-04-03 15:44:46 -07:00
|
|
|
t.m_start_tick = std::chrono::high_resolution_clock::now();
|
2017-02-16 16:29:52 -08:00
|
|
|
return t;
|
2016-10-10 18:12:26 -07:00
|
|
|
}
|
|
|
|
|
2017-04-27 18:08:52 -07:00
|
|
|
std::string ElapsedTime::to_string() const { return format_time_userfriendly(elapsed<std::chrono::nanoseconds>()); }
|
2016-10-10 18:12:26 -07:00
|
|
|
}
|