Chrono - 两个时间点之间的差异(以毫秒为单位)?
Chrono - The difference between two points in time in milliseconds?
如何获得(使用 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;
我怎样才能得到这个时间以毫秒为单位,所以我可以将持续时间用作无符号整数,而不是浮点数,然后乘以 1000?
http://www.cplusplus.com/reference/chrono/duration_cast/
std::chrono::duration_cast<std::chrono::milliseconds>();
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()
std::chrono::duration
has two template parameters, the second being exactly the unit of measure. You can invoke std::chrono::duration_cast
to cast from one duration type to another. Also, there is a predefined duration type for milliseconds: std::chrono::milliseconds
。组合在一起:
auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now);
要获得实际的毫秒数,请使用 duration::count
:
auto ms = milliseconds.count();
它的 return 类型是 duration::rep
,对于像 std::chrono::milliseconds
这样的标准持续时间类型,它是一个未指定大小的有符号整数。
我在使用 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
如何获得(使用 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;
我怎样才能得到这个时间以毫秒为单位,所以我可以将持续时间用作无符号整数,而不是浮点数,然后乘以 1000?
http://www.cplusplus.com/reference/chrono/duration_cast/
std::chrono::duration_cast<std::chrono::milliseconds>();
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()
std::chrono::duration
has two template parameters, the second being exactly the unit of measure. You can invoke std::chrono::duration_cast
to cast from one duration type to another. Also, there is a predefined duration type for milliseconds: std::chrono::milliseconds
。组合在一起:
auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now);
要获得实际的毫秒数,请使用 duration::count
:
auto ms = milliseconds.count();
它的 return 类型是 duration::rep
,对于像 std::chrono::milliseconds
这样的标准持续时间类型,它是一个未指定大小的有符号整数。
我在使用 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