Chrono - Разница между двумя точками во времени в миллисекундах?
Как я могу (используя библиотеку std:: chrono) разницу между двумя точками во времени в миллисекундах?
Я мог бы сделать это, используя это:
std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();
std::chrono::time_point<std::chrono::system_clock> foo = now + std::chrono::milliseconds(100);
std::chrono::duration<float> difference = foo - now;
const int milliseconds = difference.count() * 1000;
Как я могу получить это время в миллисекундах, поэтому я могу использовать длительность как unsigned int, а не float, а затем умножить на 1000?
Ответы
Ответ 1
std::chrono::duration
есть два параметра шаблона, причем второй является именно единицей измерения. Вы можете вызвать std::chrono::duration_cast
для приведения типа одного типа продолжительности к другому. Кроме того, есть предопределенный тип длительности для миллисекунд: std::chrono::milliseconds
. Составляя это вместе:
auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now);
Чтобы получить фактическое количество миллисекунд, используйте duration::count
:
auto ms = milliseconds.count();
Тип возвращаемого значения - duration::rep
, который для стандартных типов продолжительности, таких как std::chrono::milliseconds
представляет собой целое число со знаком неопределенного размера.
Ответ 2
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()
Ответ 3
http://www.cplusplus.com/reference/chrono/duration_cast/
std::chrono::duration_cast<std::chrono::milliseconds>();
Ответ 4
Я знаю, что этому посту 3 года... но у меня все еще были проблемы с продолжительностью распечатки таких букв, как e-09. Вот как я это исправил:
auto start = std::chrono::high_resolution_clock::now();
< run your function or code here >
auto finish = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = finish - start;
std::cout << "Elapsed Time: " << elapsed.count() << " seconds" << std::endl;
И теперь я получаю желаемые результаты:
Elapsed Time: 34.406 seconds