簡體   English   中英

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;

我怎樣才能在毫秒內得到這個時間,所以我可以將持續時間用作unsigned int,而不是float,然后乘以1000?

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是一個未指定大小的有符號整數。

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

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

std::chrono::duration_cast<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM