Скажем, у меня время задачи со следующим:
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;
... тогда похоже, что я получаю секунды и доли секунды, с которыми я надеялся работать.
Хотя этот код работает с компилятором, который я использую, я беспокоюсь, что из-за того, что я не указываю единицы измерения, которые мне нужны во время преобразования продолжительности, я сделал это для конкретной реализации и может работать не так, как ожидалось с другим компилятором. Есть ли лучший или более явный способ преобразования длительности в «секунды» (включая дробную часть)?