Точки времени std :: chrono, преобразования продолжительности и дробные значения - PullRequest
0 голосов
/ 18 июня 2019

Скажем, у меня время задачи со следующим:

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;

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

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

...