У меня есть функция, которая возвращает std::time_t
от момента времени steady_clock:Продолжительность от станд :: time_t (между steady_clock)
static const time_t steady_clock_to_time_t(steady_clock::time_point t)
{
return system_clock::to_time_t(system_clock::now()
+ (t - steady_clock::now()));
}
В одной функции я получаю время с точки зрения станд :: time_t по говоря:
steady_clock::time_point p1 = steady_clock::now();
const std::time_t t1 = steady_clock_to_time_t(p1);
в другой функции t1
получает передается в мне нужно рассчитать, сколько времени потребовалось, чтобы получить от t1
до t2
, но ничего из этого не работает:.
void func(std::time_t t1)
{
std::cout << t1 << '\n';
steady_clock::time_point tp2 = steady_clock::now();
steady_clock::time_point tp1 = system_clock::from_time_t (t1);
// see how long it took
std::chrono::duration<double> timeTaken{std::chrono::duration_cast<std::chrono::duration<double>>(tp2-tp1)};
auto d = std::chrono::duration_cast<std::chrono::microseconds>(tp2 - tp1).count();
std::cout << "Took: " << d << " microseconds\n";
Дан зЬй :: time_t, который был датируемым с помощью неуклонных часов (с помощью функции преобразования выше, но я открыт для чего-то еще), как я тогда метки времени позже, а затем посмотреть, как долго он взял в микросекундах между двумя временами?
EDIT:
const std::time_t t1 = steady_clock::now().time_since_epoch().count();
Это получает передается Func
void func(std::time_t t1)
{
steady_clock::time_point tp2 = steady_clock::now();
Как получить длительность в микросекундах между ТР2 и t1?
Вы должны объяснить, что вы имеете в виду «это не работает». В любом случае, в практическом смысле это невозможно, потому что разрешение на время, измеряемое 'time_t', составляет одну секунду, поэтому вы не можете приблизиться к точности микросекунды. – Hurkyl
Есть ли способ конвертировать возвращаемое значение stable_clock :: now() в длинное целое число? – Ivan
'now()' возвращает 'time_point'; вы можете использовать 'time_point :: time_since_epoch()', чтобы преобразовать его в длительность с момента запуска его часов. Как вы уже видели, 'duration :: count()' вернет числовое значение тиков, которое вы желаете. – Julian