Точки времени std::chrono, преобразования продолжительности и дробные значения

Скажем, у меня есть задание со следующим:

auto t1 = std::chrono::high_resolution_clock::now();
// ...do work here...
auto t2 = std::chrono::high_resolution_clock::now();

Прошедшее время:

auto elapsed = t2 - t1;

Я немного запутался относительно того, какие единицы duration использует, и как правильно преобразовать его в секунды с долями секунды.

Если я сделаю это:

std::cout << "count=" << elapsed.count() << std::endl;

... тогда я, кажется, получаю наносекунды. Но если я сделаю это вместо этого:

const double secs = std::chrono::duration<double>(elapsed).count();
std::cout << "count=" << secs << std::endl;

... тогда, похоже, я получаю секунды и доли секунды, с которыми я надеялся работать.

Хотя этот код работает с компилятором, который я использую, я беспокоюсь о том, что, поскольку я не указываю единицы измерения, которые мне нужны во время преобразования длительности, я сделал это для конкретной реализации и может не работать должным образом с другим компилятор. Есть ли лучший или более явный способ преобразования длительности в "секунды" (включая дробную часть)?

0 ответов

Другие вопросы по тегам