计时 - 在时间以毫秒为单位的两点之间的区别?

问题描述 投票:14回答:4

我怎样才能获得(使用的std ::计时库)的时间以毫秒为单位的两点之间的区别?

我能做到这一点使用此:

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类型,而不是浮动,然后乘以1000?

c++ c++11 time chrono
4个回答
24
投票

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是未指定大小的有符号整数。


5
投票
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()

0
投票

http://www.cplusplus.com/reference/chrono/duration_cast/

std::chrono::duration_cast<std::chrono::milliseconds>();

0
投票

我有时间打印出与像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
© www.soinside.com 2019 - 2024. All rights reserved.